一个简单的MD5加盐

虽然都说MD5加密一下密码比较好,但是如果密码过于简单,比如123456,经过MD5加密之后还是不安全,因为别有用心的人可以使用彩虹表来撞库得到密码。因此为了加大破解难度,需要给MD5算法加盐。下面是一个简单的加盐算法。
当然,我不是说加了盐就一劳永逸了,下面的代码也不安全,这样做只是为了加大破解的难度。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类
 */
public class Md5EncryptionHelper {

    /**
     * 获取MD5字符串
     */
    public static String getMD5(String content) {
        try {
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.update(content.getBytes());
            return getHashString(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    private static final String SALT = "0fdfa5e5a88bebae640a5d88e7c84708";

    /**
     * 获取加盐的MD5字符串
     */
    public static String getMD5WithSalt(String content) {
        return getMD5(getMD5(content) + SALT);
    }

    private static String getHashString(MessageDigest digest) {
        StringBuilder builder = new StringBuilder();
        for (byte b : digest.digest()) {
            builder.append(Integer.toHexString((b >> 4) & 0xf));
            builder.append(Integer.toHexString(b & 0xf));
        }
        return builder.toString();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,624评论 5 29
  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,887评论 0 6
  • 三毛曾说,每个父母都是孩子守望的天使。 我也一直觉得一个女人遇见了孩子,才算真正遇见了温柔的自己。我从来没觉得自己...
    我是大方阅读 510评论 4 7
  • 今天要深刻的反省自己,主题是懒。 今天人生中第一节正儿八经的课,上得一塌糊涂,没被批评也是侥幸。以后还需多多准备帮...
    Rosemary訫雨阅读 310评论 1 2
  • 世界这么大,到处都是人。 不喜欢心眼太多的人, 因为玩不过人家; 不喜欢太有心机的人, 因为相处着太累; 不喜欢太...
    陈新丽阅读 412评论 0 0