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

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

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

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

关键技术:

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

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

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

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

实例演示:

public class MD5Util {
    private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

/**
     * 转换字节数组为16进制字串
     *
     * @param b
     *            字节数组
     * @return 16进制字串
     */
    public static String byteArrayToHexString(byte[] b) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++) {
            resultSb.append(byteToHexString(b[i]));
        }
        return resultSb.toString();
    }

private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n = 256 + n;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }

public static String MD5Encode(String origin) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            resultString = byteArrayToHexString(md.digest(resultString
                    .getBytes()));
        } catch (Exception ex) {
        }
        return resultString;
    }
    
    public static boolean isValidate(String input,String output){
        
        boolean status = false;
        
        if(MD5Util.MD5Encode(input).equals(output)){
            status = true;
        }else{
            status = false;
        }
        
        return status;
    }
    
    public static void main(String[] args) {
        
        System.out.println(MD5Encode("123"));
        
        boolean b = MD5Util.isValidate("123", "21232f297a57a5a743894a0e4a801fc3");
        System.out.println(b);
        
    }
}

java中字符串 MD5密码的加密与验证相关推荐

  1. java md5加密长度_java中使用MD5加密算法进行加密

    java中使用MD5加密算法进行加密以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在各种应用系统的开发中 经常需要存储 ...

  2. java-对密码进行加密和验证的类

    java 密码MD5加密 java加密bytestring算法null package com.sunnylocus.util;      import java.security.MessageDi ...

  3. java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密

    如何在JAVA中使用MD5加密对密码进行加密 发布时间:2020-11-25 17:12:40 来源:亿速云 阅读:118 作者:Leah 本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行 ...

  4. java中的md5加密_java中的MD5加密

    java中的MD5加密 2016-01-22 09:07:00 admin 原创 1144 摘要:java中的MD5加密 /** * * md5加密 * @author LiuJiawan * @da ...

  5. java中md5加密和解密_如何在java中实现md5加密和解密

    如何在java中实现md5加密和解密 关注:273  答案:1  mip版 解决时间 2021-01-19 20:37 提问者精神疯裂 2021-01-19 05:36 如何在java中实现md5加密 ...

  6. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...

  7. java中使用MD5进行计算摘要

    java中使用MD5进行加密 在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖 ...

  8. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

  9. java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配

    java中字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. ...

最新文章

  1. 百度要回归 A 股?
  2. MyBatis框架使用(一)
  3. GPUImageMovieWriter实现暂停录制,重新录制
  4. Array Elimination 运算,gcd,思维
  5. PHP中三元运算符的用法_php中三元运算符用法_PHP教程
  6. 泛型 java 总结_JAVA泛型总结
  7. 用collectionview实现瀑布流-转(后面附demo,供参考)
  8. Linux进程管理及作业控制(转)
  9. 常微分方程:初值问题与边值问题
  10. 关于s19赛季服务器维修,王者荣耀S19赛季版本更新问题及解决办法一览
  11. 跨界合作成潮流 智能家居竞争升级
  12. 测试部门工作周报模板
  13. 【软件使用】Macbook M1 QuickTime录屏讲解(只录电脑或者同时录电脑和麦克风人声)
  14. android ocr 身份证识别
  15. 收集瓶盖赢大奖+石头剪刀布+幸运数字+数苹果
  16. tab效果——支持tab标题的宽度自适应
  17. 有限状态机FSM(finite state machine) 二
  18. 软件国际化—语言代码表
  19. m短波宽带通信系统的信道建模matlab仿真
  20. ERP开发-生产模块-数据表关系图

热门文章

  1. Pokémon Army (easy version)
  2. js获取视频长度的3种方法
  3. AI值得信任吗?“可信AI”或能给出答案
  4. IC验证培训——SystemVerilog通用程序库(上)
  5. python中if缩进规则_Python缩进与if语句 空格的魅力
  6. 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)
  7. [Leetcode] 741. Cherry Pickup 解题报告
  8. Daniel Sabbah:软件工程的转折点
  9. 关于MOS管的详细介绍
  10. mybatis-sqlserver批量新增返回id