两种方式实现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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《零基础》MySQL NULL 值处理(二十一)

    《零基础》MySQL NULL 值处理(二十一)MySQL使用SQLSELECT命令及WHERE子句来读取数据表中的数据,但是当提供的查询条件字段为NULL时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:ISNULL:当列的值是NULL,此运算符返回true。 ISNOTNULL:当列的值不为NULL,运算符返回true。 <=>:比较操作符(不同于=运算符),当比较的的两个值相等或者都为NULL时返回true。关于NULL的条件比较运算是比较特殊的…

    2022年5月5日
    39
  • java递归生成树形菜单_java递归无限层级树

    java递归生成树形菜单_java递归无限层级树java递归实现权限树(菜单树)省市县多级结构

    2025年11月27日
    2
  • android3d画廊自动切换,GitHub – lzjin/ViewPagerGallery: 支持无限滑动的3D视觉的画廊效果、 平面普通广告栏轮播…

    android3d画廊自动切换,GitHub – lzjin/ViewPagerGallery: 支持无限滑动的3D视觉的画廊效果、 平面普通广告栏轮播…ViewPagerGallery3D轮播图片博客讲解地址,欢迎前往查看欢迎大家Star,老铁给鼓励呗主要功能支持左右无限滑动轮播支持3D效果的画廊轮播支持平面铺满常见轮播支持平面自定义间距轮播支持网络缓存图片(使用的Glide4.9)支持自定义指示器图标(默认指示器个数与url一样)支持自定义圆角支持自动切换图片,间隔默认5秒;手指滑动时停止定时器API方法介绍initBanner(urlList…

    2022年6月12日
    41
  • java soa是什么_如何通俗易懂地解释什么是SOA?

    java soa是什么_如何通俗易懂地解释什么是SOA?对于SOA,感觉这个概念性的东西没那么容易理解,看了各位大神的解释感觉很多都说的很抽象,所以想尝试用自己的语言解释下,仅做参考。SOA粗暴理解:把系统按照实际业务,拆分成刚刚好大小的、合适的、独立部署的模块,每个模块之间相互独立。比如现我有一个数据库,一个JavaWeb(或者PHP等)的网站客户端,一个安卓app客户端,一个IOS客户端。现在我要从这个数据库中获取注册用户列表,如果不用SOA的设计…

    2022年6月15日
    28
  • pycharmdebug怎么用_使用中是什么意思

    pycharmdebug怎么用_使用中是什么意思Debug工具篇文章接上文Debug工具是pycharmIDE中集成的调试程序工具,在这里程序员可以查看程序的执行细节和流程或者调解bug。Debug工具使用步骤:1.打断点2.Debug调试打断点断点位置目标要调试的代码块的第一行代码即可,即一个断点即可。打断点的方法单机目标代码右侧空白的位置。Debug调试选择Debug’DebugTest’代码开始运行,直至断点处。并弹出控制台。在此处执行接下来的操作。每一项的作用如下:显示

    2022年10月15日
    3
  • MySQL使用问题_mysql的使用

    MySQL使用问题_mysql的使用MySQL常见的性能瓶颈一般都是出现在CPU和I/O上,即在数据装入内存中或磁盘上读取数据时,CPU发生了饱和或装入数据过大,内存容量不足,磁盘I/O性能被限制。这时候就要使用到Explain关键字来进行分析和调优。 基本使用 Explain关键字可以用来模拟优化器执行SQL查询语句,从而了解SQL语句的处理方式,来达到分析查询语句或表结构的性能瓶颈。通过Explain可以获得表…

    2022年10月17日
    3

发表回复

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

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