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

问题描述 投票:33回答:4

所以阅读这篇文章: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 hash sha message-digest
4个回答
29
投票

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


18
投票

添加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);
}

5
投票

旧的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


1
投票

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.