MD5 常用于密码加密,例如,在注册时可以将密码转为 MD5 再放入数据库,在登录时校验登录密码和数据库存放的加密密码是否一致,来保证密码在数据库中存储的安全性。

下面介绍使用 Java 自带的加密类 MessageDigest 来加密字符:

/**
 * MD5生成器
 *
 * 1.MD5(message-digest algorithm 5)信息摘要算法,
 *   它的长度一般是32位的16进制数字符串(如81dc9bdb52d04dc20036dbd8313ed055)
 * 2.由于系统密码明文存储容易被黑客盗取
 * 3.应用:注册时,将密码进行md5加密,存到数据库中,防止可以看到数据库数据的人恶意篡改。
 *       登录时,将密码进行md5加密,与存储在数据库中加密过的密码进行比对
 * 4.md5不可逆,即没有对应的算法,从产生的md5值逆向得到原始数据。
 *   但是可以使用暴力破解,这里的破解并非把摘要还原成原始数据,如暴力枚举法。
 */
public class MD5Utils {

    public static String md5(String password) {
        //生成一个md5加密器
        try {
            //创建具有指定算法名称如MD5的摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            //使用指定的字节数组更新摘要
            md.update(password.getBytes());
            //BigInteger 将8位数的字符串转成16位的字符串,得到的字符串形式是哈希码值
            //BigInteger(参数1, 参数2) 参数1:1表示正数 0表示零 -1表示负数
            //md.digest() 进行哈希计算并返回一个字节数组
            return new BigInteger(1, md.digest()).toString(16);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}

原文地址:http://www.cnblogs.com/luisblog/p/16861608.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性