调用MessageDigest时发生java异常。getInstance(“SHA256”)
我有在Android上运行良好的代码。当我用JRE 1.6将它移植到我的Windows 64位机器上时,代码不起作用
当我运行以下代码行时:
final MessageDigest digest = MessageDigest.getInstance("SHA256")
我得到以下例外情况:
java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available at sun.security.jca.GetInstance.getInstance(Unknown Source) at java.security.Security.getImpl(Unknown Source) at java.security.MessageDigest.getInstance(Unknown Source)
我在网上发现有人声称可以将SHA256与Sun JRE附带的标准加密提供程序一起使用,有人说我需要使用另一个提供程序,例如Bouncy Castle
我不希望使用其他提供商。有可能使它工作吗
# 1 楼答案
当您对JCA服务可以使用什么算法有疑问时,您的第一个调用端口应该是JCA Standard Algorithm Name Documentation。在符合JCA的JVM中MessageDigest服务支持的算法是:
MD2
MD5
SHA-1
SHA-256
SHA-384
SHA-512
提供商通常会为这些算法提供别名,这就是为什么它可能适用于Bouncy Castle,但如果可以的话,您应该坚持使用这些别名,以最大限度地提高可移植性
如果将代码更改为以下内容,它将按预期工作:
# 2 楼答案
SHA-256应该是getInstance()的参数
Link for the list of algorithms supported for message digest