java如何对字符串进行md5加密,获取md5值

2025-10-27 06:21:25

1、md5算法主要应用在密码领域,为了防止明文传输密码的危险性,一般会用密码的md5值来代替密码本身

java如何对字符串进行md5加密,获取md5值

2、好,接下去我们就要写一个md5算法的工具类,来帮助我们计算字符串所对应的md5值

java如何对字符串进行md5加密,获取md5值

3、首先创建一个MD5Utils工具类

java如何对字符串进行md5加密,获取md5值

4、然后来写md5算法,事实上你不需要md5算法具体是怎么实现的,这里我们也只是调用了java自带的md5算法,只不过对其结果进行了优化,转换成了16进制的字符串了而已

java如何对字符串进行md5加密,获取md5值

5、虽然md5本身是不可逆的,但是因为其唯一性,会遭到遍历破解,所以一般使用md5的时候还会进行加盐操作,即在md5运算结果上再加入自己的加密算法,例如这里为将结果都加上字符串 yan,这样就不容易被破解了,加盐的加密算法也可以自己直接封装在工具类中

java如何对字符串进行md5加密,获取md5值

6、贴上工具类的完整代码

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * MD5加密工具类 */public class MD5Utils {    /**     * 获取MD5加密     *      * @param pwd     *            需要加密的字符串     * @return String字符串 加密后的字符串     */    public static String getPwd(String pwd) {        try {            // 创建加密对象            MessageDigest digest = MessageDigest.getInstance("md5");            // 调用加密对象的方法,加密的动作已经完成            byte[] bs = digest.digest(pwd.getBytes());            // 接下来,我们要对加密后的结果,进行优化,按照mysql的优化思路走            // mysql的优化思路:            // 第一步,将数据全部转换成正数:            String hexString = "";            for (byte b : bs) {                // 第一步,将数据全部转换成正数:                // 解释:为什么采用b&255                /*                 * b:它本来是一个byte类型的数据(1个字节) 255:是一个int类型的数据(4个字节)                 * byte类型的数据与int类型的数据进行运算,会自动类型提升为int类型 eg: b: 1001 1100(原始数据)                 * 运算时: b: 0000 0000 0000 0000 0000 0000 1001 1100 255: 0000                 * 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 0000                 * 0000 0000 1001 1100 此时的temp是一个int类型的整数                 */                int temp = b & 255;                // 第二步,将所有的数据转换成16进制的形式                // 注意:转换的时候注意if正数>=0&&<16,那么如果使用Integer.toHexString(),可能会造成缺少位数                // 因此,需要对temp进行判断                if (temp < 16 && temp >= 0) {                    // 手动补上一个“0”                    hexString = hexString + "0" + Integer.toHexString(temp);                } else {                    hexString = hexString + Integer.toHexString(temp);                }            }            return hexString;        } catch (NoSuchAlgorithmException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return "";    }}

java如何对字符串进行md5加密,获取md5值

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢