哈希一个只有一个字节的数组的简单示例:
import java.security.MessageDigest;
import java.util.Arrays;
import org.bouncycastle.jcajce.provider.digest.Keccak;
public class Program {
public static void main(String[ ] args) {
// MessageDigest:
byte[] state = { (byte) 1};
try {
MessageDigest md5 = MessageDigest.getInstance("SHA-384");
byte[] digest = md5.digest(state);
System.out.println("A: " + Arrays.toString(digest));
} catch (Exception e) {}
// BouncyCastle Keccak:
Keccak.Digest384 keccak = new Keccak.Digest384();
keccak.update(state);
try {
byte[] digest = new byte[48];
keccak.digest(digest, 0, 48);
System.out.println("B: " + Arrays.toString(digest));
} catch (Exception e) {}
}
}
该程序的输出如下:
答:[-115、44、-24、125、-122、-11、95、-49、-85、119、10、4、123、9、13、-94、50、112、-6、32 , 104, 50, -33, -22, 126, 12, -108, 111, -1, 69, 31, -127, -102, -35, 36, 35, 116, -66, 85, 27, 13 , 99, 24, -19, 108, 125, 65, -40]
B:[45、-11、56、-101、-127、15、27、78、83、13、3、-41、58、-24、82、-74、37、-120、-70、20 , 26, 16, 66, 76, 2, 104, -22, -24, -58, 79, -81, 58, -71, 1, -14, -115, -27, 85, 73, -70, -8、113、-67、-93、-19、62、-15、65]
他们不应该是一样的还是我错过了什么?
使用的 BouncyCastle 版本: https ://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on/1.58
Java:jdk1.8.0_121