MD5简介:
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。
MD5算法的特点:
压缩性:任意长度的数据,算出MD5值长度都是固定的;
容易计算:从原数据计算出MD5值很容易;
抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大的区别;
强抗碰撞:想得到两个具有相同MD5值得数据是非常困难的;
不可逆性:MD5加密是不可逆的,一个字符串对应唯一的MD5值,但一个MD5值对应多个字符串;
MD5的应用:
一致性校验:对一段信息产生信息摘要,以防止被篡改。用于下载文件完整性的校验。
数字签名:对一段Message产生fingerprint(指纹),以防止被篡改。
安全访问认证:操作系统的登陆验证以及各类网站、系统的登陆验证。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
MD5的java实现:
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。
MD5算法的特点:
压缩性:任意长度的数据,算出MD5值长度都是固定的;
容易计算:从原数据计算出MD5值很容易;
抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大的区别;
强抗碰撞:想得到两个具有相同MD5值得数据是非常困难的;
不可逆性:MD5加密是不可逆的,一个字符串对应唯一的MD5值,但一个MD5值对应多个字符串;
MD5的应用:
一致性校验:对一段信息产生信息摘要,以防止被篡改。用于下载文件完整性的校验。
数字签名:对一段Message产生fingerprint(指纹),以防止被篡改。
安全访问认证:操作系统的登陆验证以及各类网站、系统的登陆验证。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
MD5的java实现:
package zjm.md5.test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5_Verify {
//得到32位的加密结果
public static String encrypt(String str){
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
byte[] str_byte = str.getBytes();
byte[] md5_result_byte = md.digest(str_byte);
// System.out.println(md5_result_byte);
// System.out.println("字节数组的长度是:"+md5_result_byte.length);
String md5_result = bytesToHex(md5_result_byte);
return md5_result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
//将字节数组转化为16进制字符串
public static String bytesToHex(byte[] bytes) {
StringBuffer md5str = new StringBuffer();
//把数组每一字节换成16进制连成md5字符串
int digital;
for (int i = 0; i < bytes.length; i++) {
System.out.println(", "+bytes[i]);
digital = bytes[i];
if(digital < 0) { //16及以上的数转16进制是两位
digital += 256;
}
if(digital < 16){
md5str.append("0");//如果是0~16之间的数的话则变成0X
}
md5str.append(Integer.toHexString(digital));
}
return md5str.toString().toUpperCase();
}
public static void main(String[] args) {
String str = "123";
if(encrypt(str)!=null){
String result = encrypt(str);
System.out.println("加密结果为"+result);
}
}
}