Поддерживает ли каждый телефон Android SHA-256
Итак, читая этот пост: Как я могу вычислить хэш SHA-256 строки в Android?
и документы: http://developer.android.com/reference/java/security/MessageDigest.html
Мне любопытно; какие телефоны будут поддерживать SHA-256? В документах строка о NoSuchAlgorithmException заставляет меня думать, что некоторые телефоны не поддерживают все алгоритмы. Прежде чем приступить к реализации этого для приложения и ожидать, что оно будет работать одинаково на всех телефонах, я хочу знать, знает ли кто-нибудь что-нибудь об этом...?
Мне кажется странным, что у класса MessageDigest нет некоторых констант для выбора алгоритма, который вы хотите использовать.
Ответы
Ответ 1
Все Android-устройства поддерживают SHA-256. NoSuchAlgorithmException
указывает, что запрошенный алгоритм не может быть найден и необходим, потому что метод принимает аргумент String
для имени алгоритма. Если вы перешли в "foo-256", метод рекурсии - это выбросить NoSuchAlgorithmException
, потому что по причинам, не зависящим от моего понимания, нет алгоритма под названием "foo-256". Предполагая, что вы передаете имя, которое, как вы уверены, является алгоритмом, который может использовать Android, вы никогда не увидите это исключение.
Ответ 2
Добавить 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);
}
Ответ 3
SHA-256withRSA не поддерживается в старых версиях Android (это подтверждено в Android 4.0.3, 4.1.1). Я столкнулся с этой проблемой при использовании АОЭП. Алгоритмом дайджеста, возвращаемым сервером SCEP, является SHA-256. Но SHA-256withRSA не присутствует ни в каких по умолчанию SecurityProviders в этих версиях Android. Найдена соответствующая ссылка:
Какие версии Android поддерживают алгоритмы подписи пакетов?
Эта ссылка показывает, что SHA-256wssRS был добавлен позже:
https://android-review.googlesource.com/44360
Ответ 4
Согласно документации Android для MessageDigest, SHA-256 поддерживается начиная с API 1.
![enter image description here]()