摘要 MD5 的返回结果是128位 2进制 数字;通常显示摘要使用用16进制;
摘要:比较两个数据的完整性;MD5;利用摘要存密码;将摘要存到数据库中;
摘要一样,数据一样;数据和摘要是一一对应的关系;
短的密码计算算摘要,可以再加盐(盐一定是一样的);就不会被反查;
创建摘要的方法1:
import Java .security.MessageDigest;
//1.创建摘要算法对象MessageDigest;
String str=”dssfsgdggffggf”;
MessageDigest md5=MessageDigest.getInstance(“MD5”);
//2将要加密的数据提交到MD5对象中;
byte[] data=str.getBytes(“utf-8”);
md5.update(data);//数据提交到MD5
//3.获取计算后的摘要
byte[] md=md5.digest();
String hex=hex(md);
System.out.println(hex);
//写一个 算法 hex(md):将2进制转换为16进制 字符串 ;
public String hex(byte[] ary){
String digi=”0123456789abcdef”;
char [] hex=new char[ary.length*2];
int i=0;//i代表hex数组的下标;
for(int b:ary){
b=b&0xff;//去掉高24位,相当于去掉负数的影响;
int b1=(b>>4)&0xff;
int b2=b&0xff;
char c1=digi.charAt(b1);
char c2=digi.charAt(b2);
hex[i++]=c1;
hex[i++]=c2;
}
return new String(hex);
}
创建摘要的算法2:
//导入一个包;commons-codec;利用这个包中现成的算法;
import org. apache .commons.codec.digest.DigestUtils;
String str=”dssfsgdggffggf”;
MessageDigest md5=MessageDigest.getInstance(“MD5”);
byte[] data=str.getBytes(“utf-8”);
md5.update(data);//数据提交到MD5
byte[] md=md5.digest();
String hex=Hex.encodeHexString(md);
注:摘要算法一般用于写登录的时候,对密码进行加密的时候使用;希望有所帮助