如何使用BouncyCastle计算消息摘要?

How to use BouncyCastle for calculating Message Digests?

我目前正在研究 Java 和散列。

我在网上四处寻找时遇到了 bouncycastle,我把它安装在我的 IDE 和所有东西中。

但是,我如何使用它使用找到的算法对文本进行哈希处理 here? (查找第 5.2 节算法)

我只想使用本节中定义的摘要算法:

GOST3411 - MD2 - MD4 - MD5 - RipeMD128 - RipeMD160 - RipeMD256 - RipeMD320 - SHA1 - SHA-224 - SHA-256 - SHA-384 - SHA-512 - SHA3-224 - SHA3-256 - SHA3-384 - SHA3-512 - Skein-256-* - Skein-512-* - Skein-1024-* - Tiger - Whirlpool

鉴于对原始问题的澄清,我已经完全编辑了我的答案。要使用 SHA-512 摘要算法对字符串进行哈希处理,您需要向 JVM 注册 BouncyCastle,然后,您可以直接使用 Java API 或 BouncyCastle 类。

例如Java APIs

// register the BouncyCastleProvider with the Security Manager
Security.addProvider(new BouncyCastleProvider());

String plainString = "Plaintext Secret";

MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
byte[] hashedString = messageDigest.digest(plainString.getBytes());

doSomething().with(hashedString);

您也可以直接使用 BouncyCastle API,但如果可以的话,最好 (IMO) 使用 Java API 以实现便携性。 (如果你找到一个比 BouncyCastle 更好的库怎么办?有疑问,但你明白了。)

Security.addProvider(new BouncyCastleProvider());

String plainString = "Plaintext Secret";

// instantiate the BouncyCastle digest directly.
MessageDigest messageDigest = new SHA512Digest();
byte[] hashedString = messageDigest.digest(plainString.getBytes());

doSomething().with(hashedString);