当前位置: 首页 > 面试题库 >

调用MessageDigest.getInstance(“ SHA256”)时发生异常

鞠乐
2023-03-14
问题内容

我有在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(未知源)处不可用

我在互联网上发现有人声称可以与Sun JRE附带的标准加密提供程序一起使用SHA256,而有人说我需要使用另一个提供程序,例如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");


 类似资料:
  • 我是Spring的新手。我正在使用SpringWebMVC开发RESTAPI。对于错误处理,我得到了这个链接http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann rest spring mvc异常 我曾尝试在我的项目中使用ResponseEntityExceptionHand

  • 假设我有以下代码行, 我的代码为: 现在发生的情况是,当编译器到达}catch(final SQLException se){时,它没有转到它的catch主体,只是脱离了,不知道为什么吗?

  • 问题内容: 我想这是某种依赖性问题,所以这是我的树: 从我发现的情况来看,Spring 4.1.1应该可以与javax.servlet 3.1.0一起使用,但是 我 在调用response.getStatus( ) 时遇到了 java.lang.NoSuchMethodError:javax.servlet.http.HttpServletResponse.getStatus() )放在我的拦截器

  • 同时调用cTAKES解析器从tika-app得到以下: 例外 异常java的屏幕截图。lang.NoSuchMethodError 线程“main”java中出现异常。lang.NoSuchMethodError:opennlp。工具。sentdetect。句子模型。getMaxentModel()Lopennlp/model/AbstractModel; 我遵循了本链接中提到的步骤。我无法理解这

  • 问题内容: 我在Java中为程序使用多线程。我已经成功运行了线程,但是当我使用线程时,它正在抛出。如何使线程等待通知它? 问题答案: 你需要先行一步才能工作。 另外,我建议你查看并发程序包,而不是旧式的线程程序包。它们更安全,更易于使用。 快乐的编码。 编辑 我以为你的意思是,当你尝试在不持有对象锁定的情况下获取访问权限时会发生异常。

  • 我通过Spring Boot中编写的侦听器使用JMS对象消息。我正在通过我的Camel应用程序将ObjectMessage发送到ActiveMQ队列,我正在Spring Boot应用程序中的侦听器类中侦听队列。 代码: 这是我的POJO类: 在ActiveMQ队列中,我收到的消息为: 我在Spring Boot中的JMS侦听器: 我得到一个Exception@line: 通过堆栈溢出和网络上的其他