MD5字符串加密

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。
 下面是用Java 实现的计算 MD5 值:
/**
* MD5加密
* @return
*/
private String setMD5(){
String userInfo = “women_shi_chengxuyuan”;
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update( userInfo.getBytes() );
return new BigInteger(1, md5.digest()).toString(16);
} catch (Exception e){
e.printStackTrace();
);
}
return "";
}

  或者用下面的方法:

 public   String getMD5(String info){
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(info.getBytes("UTF-8"));
byte[] md5Array = md5.digest();
return bytesToHex1(md5Array);
//return new BigInteger(1, md5.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
return "";
} catch (UnsupportedEncodingException e) {
return "";
}
} @NonNull
private String bytesToHex1(byte[] md5Array) {
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < md5Array.length; i++) {
int temp = 0xff & md5Array[i];
String hexString = Integer.toHexString(temp);
if (hexString.length() == 1) {
strBuilder.append("0").append(hexString);
} else {
strBuilder.append(hexString);
}
}
return strBuilder.toString();
}

  

最新文章

  1. 初识Spring
  2. JMeter常用测试元件—学习笔记
  3. Linux 条件判断
  4. hdu4751Divide Groups(dfs枚举完全图集合或者bfs染色)
  5. 分区还原工具(DiskGenius)
  6. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
  7. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
  8. C++primer学习笔记(二)&mdash;&mdash;Chapter 4
  9. LTDFZ
  10. docker container link
  11. php缓存相关
  12. Yukari&#39;s Birthday
  13. 《Pointers On C》读书笔记(第四章 语句)
  14. Spark学习资料共享
  15. 通过java代码往mysql数据库中写入日期相关数据少13个小时
  16. Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
  17. @Basic表示一个简单的属性 懒加载,急加载
  18. idea的maven项目不知道为啥下载不下来jar包,看本地仓库只是下载了一下xml文件,没有jar包问题
  19. Java sun.misc.unsafe类
  20. mysql sqlite3 postgresql 简明操作

热门文章

  1. egg 自学入门demo分享
  2. vs2013 在按F5调试时,总是提示 “项目已经过期”的解决方案
  3. 【KakaJSON手册】04_JSON转Model_04_值过滤
  4. Java反射Reflect的使用详解
  5. canvas 鼠标位置缩放图形
  6. Windows 10“数字权利激活”永久性激活!!!
  7. RSA加密的java实现
  8. shiro 定义realm
  9. js 设计模式&amp;&amp;query
  10. (四十八)c#Winform自定义控件-下拉按钮