摘要算法
- 概念
- 常用摘要算法
- 基本使用
- 辅助函数
概念
摘要算法,通常用于对数据计算摘要用以签名或者不可逆加密(明文密码加密)等场景。
摘要算法的特点
常用摘要算法
- MD5(摘要长度16字节)
- SHA-1(第一代散列算法,摘要长度20字节)
- SHA-2(第二代散列算法,后面数字代表 摘要位数)
衍生具体的算法包括:- SHA - 224
- SHA - 256
- SHA - 384
- SHA - 512
- SHA - 3(第三代散列算法,基于第二代改善而来,后面数字代表 摘要位数,但是低版本JDK并不支持)
- SHA3 - 224
- SHA3 - 256
- SHA 3- 384
- SHA3 - 512
基本使用
各种散列算法的使用基本都是一致的。
- 声明摘要计算器
- 加载待计算摘要的数据
- 计算摘要,得到字节数组
String data = "待计算摘要的数据";
// 声明摘要计算器
MessageDigest sha3256Digest = MessageDigest.getInstance("SHA3-256");
// 加载待计算的数据
sha3256Digest.update(data.getBytes());
// 计算摘要
byte[] digest = sha3256Digest.digest();
辅助函数
字节数组转16进制字符串
byte[] digest = new byte[]{};
StringBuilder hexString = new StringBuilder();
for (byte b : digest) {String hex = Integer.toHexString(0xff & b);if (hex.length() == 1) {hexString.append('0');}hexString.append(hex);
}
System.out.println("16进制字符串: " + hexString.toString());