java不可逆加密算法之md5加密算法使用示例
MD5的全称是Message-Digest Algorithm 5,Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。 复制代码 代码如下: import java.security.MessageDigest; public class Test_MD5{ public final static String MD5(String s) { char hexDigits[] = { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f' }; try { byte[]strTemp=s.getBytes(); //使用MD5创建MessageDigest对象 MessageDigestmdTemp=MessageDigest.getInstance("MD5"); mdTemp.update(strTemp); byte[]md=mdTemp.digest(); intj=md.length; charstr[]=newchar[j*2]; intk=0; for(inti=0;i<j;i++){ byteb=md[i]; //System.out.println((int)b); //将没个数(int)b进行双字节加密 str[k++]=hexDigits[b>>4&0xf]; str[k++]=hexDigits[b&0xf]; } returnnewString(str); }catch(Exceptione){returnnull;} } //测试 publicstaticvoidmain(String[]args){ System.out.println("caidao的MD5加密后:n"+Test_MD5.MD5("caidao")); System.out.println("http://www.aspzz.cn/的MD5加密后:n"+Test_MD5.MD5("http://www.aspzz.cn/")); } } MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字****应用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |