Java SHA256是否具有良好的跨平台支持?

Java SHA256是否具有良好的跨平台支持?,java,android,ios,encryption,sha256,Java,Android,Ios,Encryption,Sha256,我目前正在设计一个新的RESTAPI,我正在考虑需要消息签名。在高层次上,模型如下所示: API使用者获得了API密钥和密码 API使用者使用该机密创建它发送到API的消息的消息摘要HMAC 我一直在考虑使用SHA256进行签名,但希望确保它能与以下各项配合使用: Android/Java iOS 所有其他主要平台等 我意识到SHA-1有很好的支持,但如果可能的话,我真的需要使用更强大的功能。SHA256由iOS中的CommonCrypto支持。Java通过MessageDigest.getIn

我目前正在设计一个新的RESTAPI,我正在考虑需要消息签名。在高层次上,模型如下所示:

  • API使用者获得了API密钥和密码
  • API使用者使用该机密创建它发送到API的消息的消息摘要HMAC
  • 我一直在考虑使用SHA256进行签名,但希望确保它能与以下各项配合使用:

  • Android/Java
  • iOS
  • 所有其他主要平台等

  • 我意识到SHA-1有很好的支持,但如果可能的话,我真的需要使用更强大的功能。

    SHA256由iOS中的
    CommonCrypto
    支持。Java通过
    MessageDigest.getInstance(“SHA-256”)
    以及Android(Java)支持它。还有,别忘了Windows Phone也支持它。在我看来,这是相当重要的


    正如您已经指出的,您不应该使用SHA1,因为它不是。较旧的android版本不支持SHA-256withRSA(已在android 4.0.3、4.1.1中验证相同)。我在使用JSCEP时遇到过这个问题。SCEP服务器返回的摘要算法是SHA-256。但在这些android版本中,任何默认的SecurityProviders中都没有SHA-256withRSA。找到相关链接:

    此链接显示后来添加了带有RSA的SHA-256:

    如果您发现一个平台没有现有的支持,您是否认为自己很难移植?我不知道将SHA-256的实现从一个平台移植到另一个平台有多困难,我还没有真正研究过。只是从这条线索开始研究。它有一个很小的伪代码例程,并且还指示相当多的库…看起来你不太可能需要自己做端口。SHA256可能不是265?是的,很好。修正了这个问题不是关于RSA的SHA-256,你只讨论了Android作为一个平台。