Java加密部分内容
摘自:加密:DigestUtils与java MessageDigest
这篇文章也比较详细的讲解加盐密码了:加盐密码保存的最通用方法是?
DigestUtils & MessageDigest代码
@Test
void testEncoder() {
String password = "abcdefg";
// Spring自带的工具 org.springframework.util.DigestUtils
String encodePassword = org.springframework.util.DigestUtils.md5DigestAsHex(password.getBytes());
System.out.println(encodePassword);
// org.apache.commons.codec.digest.DigestUtils
encodePassword = DigestUtils.md5Hex(password);
System.out.println("md5Hex:" + encodePassword);
encodePassword = DigestUtils.sha256Hex(password);
System.out.println("sha256Hex:" + encodePassword);
encodePassword = DigestUtils.sha384Hex(password);
System.out.println("sha384Hex:" + encodePassword);
encodePassword = DigestUtils.sha512Hex(password);
System.out.println("sha512Hex:" + encodePassword);
// org.apache.commons.codec.binary.Base64
byte[] b = Base64.encodeBase64(password.getBytes(), true);
encodePassword = new String(b);
System.out.println("Base64:" + encodePassword);
b = Base64.decodeBase64(encodePassword);
System.out.println("decodeBase64:" + new String(b));
// java.security.MessageDigest
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(password.getBytes());
byte[] byteResult = digest.digest();
encodePassword = convertbyte2String(byteResult);
System.out.println("MessageDigest:" +encodePassword);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
private String convertbyte2String(byte[] byteResult)
{
char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };
//4位代表一个16进制,所以长度需要变为原来2倍
char[] result = new char[byteResult.length*2];
int index = 0;
for(byte b:byteResult)
{
//先转换高4位
result[index++] = hexDigits[(b>>>4)& 0xf];
result[index++] = hexDigits[b& 0xf];
}
return new String(result);
}
结果:
md5DigestAsHex:7ac66c0f148de9519b8bd264312c4d64
md5Hex:7ac66c0f148de9519b8bd264312c4d64
sha256Hex:7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a
sha384Hex:9f11fc131123f844c1226f429b6a0a6af0525d9f40f056c7fc16cdf1b06bda08e302554417a59fa7dcf6247421959d22
sha512Hex:d716a4188569b68ab1b6dfac178e570114cdf0ea3a1cc0e31486c3e41241bc6a76424e8c37ab26f096fc85ef9886c8cb634187f4fddff645fb099f1ff54c6b8c
Base64:YWJjZGVmZw==
decodeBase64:abcdefg
MessageDigest:7AC66C0F148DE9519B8BD264312C4D64
结论以后再详细比价一下

浙公网安备 33010602011771号