数字摘要 (消息摘要)
数字摘要是一个消息或文本的对应的固定的长度的唯一值
为了防止篡改,为了保证文件的安全
摘要的长度是固定的,算法不可逆
MD5:128比特位 16字节
SHA-1:160比特位 20字节
package t2;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class DIgestDemo1 {
public static void main(String[] args) throws NoSuchAlgorithmException {
// 原文
String input = "科學";
// 算法
String algorithm = "MD5";
// 創建消息摘要對象
MessageDigest digest = MessageDigest.getInstance(algorithm);
// 執行消息摘要
byte[] bytes = digest.digest(input.getBytes());
StringBuilder sb = new StringBuilder();
System.out.println(new String(Base64.getEncoder().encode(bytes)));
for (byte b : bytes) {
// 密文转16进制
String string = Integer.toHexString(b & 0xff);
// 如果密文長度為1,需要高位補1
if (string.length() == 1) {
string = "0" + string;
}
sb.append(string);
}
System.out.println(sb.toString());
}
}
输出:
P/+b/PaPB8X9hRjuK/S3Hw==
3fff9bfcf68f07c5fd8518ee2bf4b71f