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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。