如何使用 java.security.MessageDigest 进行MD5和SHA的加密

java.security.MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 、SHA1、 SHA256、SHA384、SHA512算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。


import java.security.MessageDigest;

public class EncryptionUtils {

	public static String md5Encrypt(String srcStr) {
		return encrypt("MD5", srcStr);
	}

	public static String sha1Encrypt(String srcStr) {
		return encrypt("SHA-1", srcStr);
	}

	public static String sha256Encrypt(String srcStr) {
		return encrypt("SHA-256", srcStr);
	}

	public static String sha384Encrypt(String srcStr) {
		return encrypt("SHA-384", srcStr);
	}

	public static String sha512Encrypt(String srcStr) {
		return encrypt("SHA-512", srcStr);
	}

	public static String encrypt(String algorithm, String srcStr) {
		try {
			StringBuilder result = new StringBuilder();
			MessageDigest md = MessageDigest.getInstance(algorithm);
			byte[] bytes = md.digest(srcStr.getBytes("utf-8"));
			for (byte b : bytes) {
				String hex = Integer.toHexString(b & 0xFF);
				if (hex.length() == 1)
					result.append("0");
				result.append(hex);
			}
			return result.toString();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	public static void main(String[] args) {
		String str = "111111";
		System.out.println(md5Encrypt(str));
		System.out.println(sha1Encrypt(str));
		System.out.println(sha256Encrypt(str));
		System.out.println(sha384Encrypt(str));
		System.out.println(sha512Encrypt(str));
//		打印结果:
//		96e79218965eb72c92a549dd5a330112
//		3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d
//		bcb15f821479b4d5772bd0ca866c00ad5f926e3580720659cc80d39c9d09802a
//		1b0268a40ae44c012946c974d60bf5291e7bb7c63cdb72a904d9283e3dc0a34de9afebe4035665768aaa503a4e7a30c3
//		b0412597dcea813655574dc54a5b74967cf85317f0332a2591be7953a016f8de56200eb37d5ba593b1e4aa27cea5ca27100f94dccd5b04bae5cadd4454dba67d
	}
	
}

版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/6131d422632f45198c566b17cf18aca9.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值