簡體   English   中英

調用MessageDigest.getInstance(“SHA256”)時出現異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM