java中字符串 MD5密码的加密与验证

摘自:java JDK 实例宝典

        MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

   将数据(如汉字)运算为另一固定长度值是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

        本实例介绍用MD5进行加密和验证,将输入字符串通过MD5加密成另一个字符串,而且根据新的字符串无法获得原字符串,但可以在不知道原始密码的情况下进行密码验证。

 

关键技术:

*通过java.security.MessageDigest的静态方法getInstance创建具有指定算法名称的信息摘要,参数为算法名,传入“MD5”则表示将使用MD5算法。

*MessageDigest的digest实例方法使用指定的字节数组对摘要进行最后更新,然后完成摘要计算,返回存放哈希值结果的季节数组,这个数组就是MD5加密产品。

*将加密后的字节数组转换成十六进制的字符窜,形成最终的密码。

*当输入字符串经过MD5加密后,得到的字符串与密码一样,则认为密码验证通过。

 

实例演示:

 

输出结果:

对123456用MD5加密后:EE00DD3344BB55AABB55EE55FF008833
1234与密码相同?false
123456与密码相同?true

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的Java代码示例,展示如何使用MD5Util对字符串进行加密: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { // 将字符串进行MD5加密 public static String md5(String str) { try { // 获取MessageDigest实例,指定加密算法MD5 MessageDigest md = MessageDigest.getInstance("MD5"); // 更新摘要内容 md.update(str.getBytes()); // 获取加密结果,转换为16进制字符串 byte[] digest = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : digest) { // 将每个字节转换为两位16进制数,不足补0 String hex = Integer.toHexString(b & 0xff); if (hex.length() == 1) { sb.append("0"); } sb.append(hex); } return sb.toString(); } catch (NoSuchAlgorithmException e) { // 异常处理 e.printStackTrace(); return null; } } public static void main(String[] args) { // 测试MD5加密 String password = "123456"; String md5Password = md5(password); System.out.println(md5Password); } } ``` 在上面的代码,我们首先通过`MessageDigest.getInstance("MD5")`获取MessageDigest实例,指定加密算法MD5。然后,我们通过`md.update(str.getBytes())`将字符串的字节数组更新到摘要,接着通过`md.digest()`获取加密结果的字节数组,最后将字节数组转换为16进制字符串返回。 在实际应用,我们通常会将用户输入的密码进行MD5加密后再存储到数据库,以保障用户的密码安全。在用户登录时,我们需要将用户输入的密码再次进行MD5加密,然后与数据库存储的MD5摘要进行比对,以验证用户身份。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值