jmeter-Java关于MD5加密方法 以及16位32位互转

2人阅读 评论(0) 收藏 举报

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的。

小编在日常使用中发现,MD5加密有多种,而第三方只会告诉你他们使用的是MD5加密并不会告诉你是那种方法。因此小编在这里提供小编在日常使用过的两种方法:

第一种:

package hehe.md5;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Str2MD5 {
public String MD5(String sourceStr) {



String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(sourceStr.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
//buf.append(String.format("%02X", b[offset]));
}
result = buf.toString();
// String a = result.toUpperCase();
// System.out.println("MD5(" + sourceStr + ",32) = " + result);
// System.out.println("MD5 32大写:"+a);
// System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));



} catch (NoSuchAlgorithmException e) {
System.out.println(e);
}
return result;
}

}

第二种:先写一个Util类

  public static String toHexString(byte[] bytes) {
         StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < bytes.length; i++) {
             buffer.append(String.format("%02X", bytes[i]));
         }
         return buffer.toString();
    }
 
 public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException  {
String a ="";
MessageDigest md5Tool = MessageDigest.getInstance("MD5");
         byte[] md5Data = md5Tool.digest(a.toString()).getBytes("UTF-8"));
         String sn = Util.toHexString(md5Data);

}

 

关于MD5 的大小写转换以及 32位于16位可以使用 toUpperCase()  toLowerCase()   substring(8, 24)   来进行转换,还有16位加密根据甲方的要求来截取

MD5算法具有以下特点:
  1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2、容易计算:从原数据计算出MD5值很容易。
  3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
  MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

 

查看评论

16位的MD5加密和32位MD5加密的区别

MD5加密后所得到的通常是32位的编码,而在不少地方会用到16位的编码它们有什么区别呢?16位加密就是从32位MD5散列中把中间16位提取出来!其实破解16位MD5散列要比破解32位MD5散列还慢因为...
  • jackyYEN
  • jackyYEN
  • 2007-10-10 16:12:00
  • 15575

js 16位或32位md5加密

var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.l...
  • boys1999
  • boys1999
  • 2015-01-15 23:17:09
  • 3129

C ++ MD5 加密(32位和16位)

  • 2015年07月16日 14:20
  • 4.18MB
  • 下载

MD5算法加密~16位、32位、64位

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。 MD5算法加密~16位、32位、64位。 1991年,由Ronald L. Rivest开发出来,经MD2、MD...
  • typa01_kk
  • typa01_kk
  • 2015-10-15 14:39:18
  • 18369

C#实现MD5加密(16位和32位)算法

  • 2014年05月04日 18:51
  • 15KB
  • 下载

MD5简单加密实现32位16位字符

package com.kero99.ygc.util;import java.io.UnsupportedEncodingException; import java.math.BigInteger...
  • qq_17025903
  • qq_17025903
  • 2017-03-29 11:09:11
  • 999

java中16位或32位MD5加密

import java.security.MessageDigest; /** * @Description:MD5加解密工具 * @author:liuyc * @time:2016年5月2...
  • u010197591
  • u010197591
  • 2016-05-23 17:54:47
  • 10638

MD5 32位、16位加密

MD5 32位、16位加密
  • vaecnfeilong
  • vaecnfeilong
  • 2013-08-27 11:06:00
  • 2434

C# MD5-16位加密实例,32位加密实例(两种方法)

出处:http://www.xuebuyuan.com/319511.html 1.MD5 16位加密实例 using System; using System.Collections.Ge...
  • u010158775
  • u010158775
  • 2016-01-21 11:00:07
  • 3879

java,android,MD5加密算法(16位,32位)

package com.example.myweixin; import java.security.MessageDigest; import java.security.NoSuchAlgori...
  • y394996630
  • y394996630
  • 2013-10-15 10:25:54
  • 2973
    个人资料
    持之以恒
    等级:
    访问量: 644
    积分: 136
    排名: 37万+
    文章分类
    文章存档