1. 主页 > 推广 > 微信推广

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

md5是一种不可逆加密,其实也算不上是加密,只不过任何字符串经过运算都能得到一个唯一的md5值,很少会有重复的

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

方法/步骤

  1. 1

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

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

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

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

    首先创建一个MD5Utils工具类

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

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

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

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

    java如何对字符串进行md5加密,获取md5值
  6. 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值

本文由某某资讯网发布,不代表某某资讯网立场,转载联系作者并注明出处:http://www.lz366.com/weixintuiguang/276.html

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息