两种方式实现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)
上一篇 2022年7月15日 下午8:36
下一篇 2022年7月15日 下午8:36


相关推荐

  • god is a girl 中文意思_π字符

    god is a girl 中文意思_π字符E- godisagirlTimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit StatusDescriptionOneday,whenIwasdreaming,godwentintomydream,shewaspr

    2022年10月8日
    5
  • Linux安装vim命令

    Linux安装vim命令最近在Linux上使用vim编辑器编写shell脚本的时候,遇到了这样一个问题,如下:-bash:vim:commandnotfound这是因为vim命令没有安装,于是我从网上搜索了很多关于安装vim命令的教程,不过大都比较繁琐,如今介绍一种简单的方法,大家可以试一下。首先,执行如下命令进行查询:rpm-qa|grepv…

    2025年8月11日
    4
  • Redis集群搭建【超详细】

    Redis集群搭建【超详细】一 基本环境首先我们需要使用 VMware 配置几个虚拟机 我们需要安装 VMWare 然后下载自己的 linux 镜像文件 在虚拟机上安装 linux 系统 vm15 和 centos7 下载传送门提取码 lvb5 我使用的是 centos764 大致步骤可以根据其他博客将第一台虚机的系统安装成功 然后直接 clone 这台机器就可以了 然后需要修改 ip 二 准备相关软件安装包

    2026年3月19日
    2
  • 论JSP数据库连接池的必要性

    论JSP数据库连接池的必要性

    2021年7月26日
    58
  • acwing-1183. 电力(割点Tarjan)

    acwing-1183. 电力(割点Tarjan)给定一个由 n 个点 m 条边构成的无向图,请你求出该图删除一个点之后,连通块最多有多少。输入格式输入包含多组数据。每组数据第一行包含两个整数 n,m。接下来 m 行,每行包含两个整数 a,b,表示 a,b 两点之间有边连接。数据保证无重边。点的编号从 0 到 n−1。读入以一行 0 0 结束。输出格式每组数据输出一个结果,占一行,表示连通块的最大数量。数据范围1≤n≤10000,0≤m≤15000,0≤a,b<n输入样例:3 30 10 22 14 20 1

    2022年8月9日
    6
  • 取出字符串中数字的最大值

    取出字符串中数字的最大值取出字符串中数字的最大值

    2022年4月24日
    45

发表回复

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

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