java加密MD5实现及密码验证代码实例
这篇文章主要介绍了java加密MD5实现及密码验证代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
packagetest;
importjava.io.UnsupportedEncodingException;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importorg.junit.Test;
publicclassTeste{
@Test
publicvoidtestMd5(){
System.out.println(encrypt("1234567"));
}
@Test
publicvoidtestlogin(){
Stringpassword=encrypt("123456adfaf");
if(encrypt("123456adfaf").equals(password)){
System.out.println("密码正确");
}else{
System.out.println("密码错误");
}
}
privateStringencrypt(Stringpassword){
StringpasswordMd5=null;
try{
MessageDigestmd5=MessageDigest.getInstance("MD5");
byte[]bytes=md5.digest(password.getBytes("utf-8"));
passwordMd5=toHex(bytes);
}catch(NoSuchAlgorithmException|UnsupportedEncodingExceptione){
e.printStackTrace();
}
returnpasswordMd5;
}
privatestaticStringtoHex(byte[]bytes){
finalchar[]HEX_DIGITS="0123456789ABCDEF".toCharArray();
StringBuilderret=newStringBuilder(bytes.length*2);
for(inti=0;i>4)&0x0f]);
ret.append(HEX_DIGITS[bytes[i]&0x0f]);
}
returnret.toString();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。