每部Android手机都支持SHA-256吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每部Android手机都支持SHA-256吗?相关的知识,希望对你有一定的参考价值。

所以阅读这篇文章:How can I calculate the SHA-256 hash of a string in Android?

和文档:http://developer.android.com/reference/java/security/MessageDigest.html

我很好奇;哪些手机支持SHA-256?在文档中,关于'NoSuchAlgorithmException'的一行让我觉得有些手机不支持所有算法。在我为一个应用程序实现这个并期望它在所有手机上工作之前我想知道是否有人知道这个...?

我觉得奇怪的是MessageDigest类没有一些常量来选择你想要使用的算法。

答案

所有android设备都支持SHA-256。 NoSuchAlgorithmException表示无法找到所请求的算法,因为该方法对算法名称采用String参数。如果你传入“foo-256”,该方法唯一的办法就是抛出一个NoSuchAlgorithmException,因为出于我理解的原因,没有一种叫做“foo-256”的算法。假设您传递了一个名称,您确定它是Android可以使用的算法,您将永远不会看到该异常。

另一答案

添加NoSuchAlgorithmException,如下所示:

public static String SHA256 (String text) throws NoSuchAlgorithmException {

    MessageDigest md = MessageDigest.getInstance("SHA-256");

    md.update(text.getBytes());
    byte[] digest = md.digest();

    return Base64.encodeToString(digest, Base64.DEFAULT);
}
另一答案

旧的Android版本不支持SHA-256withRSA(在Android 4.0.3,4.1.1中验证相同)。我在使用JSCEP时遇到过这个问题。 SCEP服务器返回的摘要算法为SHA-256。但是在这些Android版本的任何默认SecurityProviders中都没有SHA-256withRSA。找到相关链接:Which versions of Android support which package signing algorithms?

此链接显示稍后添加了SHA-256withRSA:https://android-review.googlesource.com/44360

另一答案

根据MessageDigest的Android Documentations,自API 1起支持SHA-256。

enter image description here

以上是关于每部Android手机都支持SHA-256吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android 签名 SHA1WithRSA SHA256WithRSA MD5WithRSA

sha256可以解密吗

Android 如何查看apk签名信息的MD5(SHA1和SHA256也可以)

SHA-256 加密 php 有相关的函数吗

“sha256_password 或caching_sha2_password 需要加密”

如何在基于 Android 的 Java 中使用 SECRET KEY 制作 HMAC SHA256? [复制]