MD5字符串加密
2024-08-28 15:13:00
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、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及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();
}
最新文章
- 初识Spring
- JMeter常用测试元件—学习笔记
- Linux 条件判断
- hdu4751Divide Groups(dfs枚举完全图集合或者bfs染色)
- 分区还原工具(DiskGenius)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
- C++primer学习笔记(二)&mdash;&mdash;Chapter 4
- LTDFZ
- docker container link
- php缓存相关
- Yukari&#39;s Birthday
- 《Pointers On C》读书笔记(第四章 语句)
- Spark学习资料共享
- 通过java代码往mysql数据库中写入日期相关数据少13个小时
- Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
- @Basic表示一个简单的属性 懒加载,急加载
- idea的maven项目不知道为啥下载不下来jar包,看本地仓库只是下载了一下xml文件,没有jar包问题
- Java sun.misc.unsafe类
- mysql sqlite3 postgresql 简明操作