两种方式实现java Md5加密

两种方式实现java Md5加密一、加盐方式/***生成32位md5码*@parampassword*@return*/publicstaticStringmd5Password(Stringpassword){try{//得到一个信息摘要器MessageDigestdigest=

大家好,又见面了,我是你们的朋友全栈君。

一、加盐方式

/** * 生成32位md5码 * @param password * @return */
    public static String md5Password(String password) {

        try {
            // 得到一个信息摘要器
            MessageDigest digest = MessageDigest.getInstance("md5");
            byte[] result = digest.digest(password.getBytes());
            StringBuffer buffer = new StringBuffer();
            // 把每一个byte 做一个与运算 0xff;
            for (byte b : result) {
                // 与运算
                int number = b & 0xff;// 加盐
                String str = Integer.toHexString(number);
                if (str.length() == 1) {
                    buffer.append("0");
                }
                buffer.append(str);
            }

            // 标准的md5加密后的结果
            return buffer.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return "";
        }

    }

二、普通方式

public static String MD5(String key) {
        char hexDigits[] = {
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
        };
        try {
            byte[] btInput = key.getBytes();
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            return null;
        }
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159873.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单贪吃蛇C++语言编程(如何用c语言写贪吃蛇)

    C语言实现,编译环境VS2017附:easyx图形化(文章末尾)效果图如下(有一些函数kbhit,getch,在这表示为_kbhit与_getch)//不同编译器原因注意在Dev等集成开发软件下可能会CEo(* ̄▽ ̄*)o一、引言作为一个小白,相信大家的心情都是一样的,渴望写一个人生的第一个“贪吃蛇”。…

    2022年4月10日
    428
  • 防欺诈盗号,请勿支付或输入qq密码

    防欺诈盗号,请勿支付或输入qq密码不知道读者是否留意过这种情况:通过微信内置浏览器打开带有表单的页面,点击其中任何一个表单项都会在窗口顶部显示红色背景的防欺诈警告信息“防欺诈盗号,请勿支付或输入qq密码”,如下图所示  1)申请书下载地址:https://mp.weixin.qq.com/htmledition/res/urlrequest.doc。2)申请人主体材料包括:申请人的姓名(…

    2022年7月15日
    15
  • AngularJS三个常用的表格组件[通俗易懂]

    AngularJS三个常用的表格组件

    2022年3月5日
    43
  • JavaScript和Java的区别[通俗易懂]

    JavaScript和Java的区别[通俗易懂]  虽然JavaScript中有Java,但他们之间的关系就如同印度和印度尼西亚一样——没有什么关系。只是JavaScript中的某些语法和Java类似而已。出身不同  Java和JavaScript是由不同公司发布的不同的产品,Java是由Sun公司发布编程语言,而JavaScript是由Netscape公司发布的脚本语言。变量不同1.变量定义时的区别  定义变量时Java和JavaScript有区别。Java是强类型的语言,它要求每个变量必须在定义时明确指出这个变量是什么类型的;而JavaS

    2022年7月9日
    26
  • 更换pip源到国内镜像(docker更换阿里镜像源)

    #默认自动安装python-mpipinstall–upgradepip#一般库的本地安装pipinstallfilename.whl#pip的本地安装及版本显示python-mpipinstallpip-20.0.2-py2.py3-none-any.whlpip-Vpip项目下载地址国内镜像源https://pypi.tuna.tsinghua.edu.cn/simple#清华http://mirrors.aliyun.com/pyp.

    2022年4月11日
    43
  • 不推荐使用executors创建线程池_创建线程池的几种方式

    不推荐使用executors创建线程池_创建线程池的几种方式 java中线程池的创建除了使用ThreadPoolExecutor之外,还可以使用Executors的静态方法来获取不同的线程池。Executors类 Executors利用工厂模式向我们提供了4种线程池静态实现方式。创建无大小限制的线程池publicstaticExecutorServicenewCachedThreadPool(){return…

    2022年9月1日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号