【自用】Java加密工具:实现MD5与SHA-256加密

MD5与SHA-256加密工具

在信息安全领域,数据加密是一项基本而又至关重要的技术。本文将分享一个简单的Java加密工具类——EncryptionUtil,它提供了使用MD5和SHA-256两种算法对字符串进行加密的方法。这两种算法虽不适用于现代安全标准中的敏感数据加密(如密码存储应使用bcrypt或argon2),但在一些非关键场景下,如校验数据完整性或生成简单哈希标识符时仍有一定的应用价值。

@Slf4j
public class EncryptionUtil {

    private static final String MD5_ALGORITHM = "MD5";
    private static final String SHA_256_ALGORITHM = "SHA-256";

    /**
     * 使用MD5算法对字符串进行加密
     *
     * @param origin 需要加密的原始字符串
     * @return 经过MD5加密后生成的32位小写十六进制字符串。如果加密过程中发生异常,则返回null。
     */
    public static String encryptionMD5(String origin) {
        try {
            MessageDigest md = MessageDigest.getInstance(MD5_ALGORITHM);
            byte[] hash = md.digest(origin.getBytes());
            return new BigInteger(1, hash).toString(16);
        } catch (NoSuchAlgorithmException e) {
            log.error("encryptMD5 error, algorithm: {}, origin: {}", MD5_ALGORITHM, origin, e);
        }
        return null;
    }

    /**
     * 使用SHA-256算法对字符串进行加密
     *
     * @param origin 需要加密的原始字符串
     * @return 经过SHA-256加密后生成的64位小写十六进制字符串。如果加密过程中发生异常,则返回null。
     */
    public static String encryptionSha256(String origin) {
        String encodeStr = "";
        try {
            MessageDigest md = MessageDigest.getInstance(SHA_256_ALGORITHM);
            md.update(origin.getBytes(StandardCharsets.UTF_8));
            encodeStr = byte2Hex(md.digest());
        } catch (NoSuchAlgorithmException e) {
            log.error("encryptionSha256 error, algorithm: {}, origin: {}", MD5_ALGORITHM, origin, e);
        }
        return encodeStr;
    }

    private static String byte2Hex(byte[] bytes) {
        StringBuilder stringBuilder = new StringBuilder();
        String temp;
        for (byte aByte : bytes) {
            temp = Integer.toHexString(aByte & 0xFF);
            if (temp.length() == 1) {
                //1得到一位的进行补0操作
                stringBuilder.append("0");
            }
            stringBuilder.append(temp);
        }
        return stringBuilder.toString();
    }

    public static void main(String[] args) {
        System.out.println(encryptionMD5("123456"));
        System.out.println(encryptionSha256("123456"));
    }
}

示例代码

String md5Result = EncryptionUtil.encryptionMD5("123456");
String sha256Result = EncryptionUtil.encryptionSha256("123456");
System.out.println("MD5 Hash: " + md5Result);
System.out.println("SHA-256 Hash: " + sha256Result);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值