首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调用MessageDigest.getInstance("SHA256")异常

调用MessageDigest.getInstance("SHA256")异常
EN

Stack Overflow用户
提问于 2012-09-28 23:14:34
回答 2查看 33.9K关注 0票数 20

我有在Android上运行良好的代码。当我将它移植到安装了JRE 1.6的Windows 64位计算机上时,代码无法工作。

当我运行以下代码行时:

代码语言:javascript
复制
final MessageDigest digest = MessageDigest.getInstance("SHA256")

我得到了以下异常:

java.security.NoSuchAlgorithmException: java.security.MessageDigest.getInstance(Unknown源的java.security.Security.getImpl(未知源)的SHA256 MessageDigest在sun.security.jca.GetInstance.getInstance(Unknown源中不可用)

我在互联网上发现,有人声称可以将SHA256与Sun JRE附带的标准加密提供程序一起使用,还有人说我需要使用另一个提供程序,例如Bouncy Castle。

我不希望使用不同的提供商。有没有可能让它正常工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 23:20:37

当您不确定可以为JCA服务使用什么算法时,您的第一个调用端口应该是JCA Standard Algorithm Name Documentation。JCA兼容的JVM中的MessageDigest服务将支持的保证的算法包括:

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

提供商为这些算法提供别名是很常见的,这就是为什么它可能适用于Bouncy Castle,但如果可以最大化可移植性,您应该坚持使用这些别名。

如果您将代码更改为以下代码,它将按预期工作:

代码语言:javascript
复制
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
票数 38
EN

Stack Overflow用户

发布于 2012-09-28 23:21:43

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12642742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档