[英]Exception when calling MessageDigest.getInstance(“SHA256”)
我的代碼在Android上運行良好。 當我用JRE 1.6將它移植到我的Windows 64位機器時,代碼不起作用。
當我運行以下代碼行時:
final MessageDigest digest = MessageDigest.getInstance("SHA256")
我得到以下異常:
java.security.NoSuchAlgorithmException:SHA256 MessageDigest在java.security.MessageDigest.getInstance(未知來源)的java.security.Security.getImpl(未知來源)的sun.security.jca.GetInstance.getInstance(未知來源)中不可用
我在Internet上發現人們聲稱可以將SHA256與Sun JRE附帶的標准加密提供程序一起使用,人們說我需要使用其他提供程序,例如Bouncy Castle。
我寧願不使用其他提供商。 是否有可能使其工作?
如果您對可用於JCA服務的算法存在疑問,則您的第一個調用端口應該是JCA 標准算法名稱文檔 。 保證在符合JCA的JVM中由MessageDigest服務支持的算法是:
MD2
MD5
SHA-1
SHA-256
SHA-384
SHA-512
提供商為這些算法提供別名是很常見的,這就是為什么它可能與Bouncy Castle一起使用,但如果你能最大限度地提高可移植性,你應該堅持這些。
如果您將代碼更改為以下代碼,它將按預期工作:
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
SHA-256應該是getInstance()的參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.