Подтвердить что ты не робот

Поддерживает ли каждый телефон Android SHA-256

Итак, читая этот пост: Как я могу вычислить хэш SHA-256 строки в Android?

и документы: http://developer.android.com/reference/java/security/MessageDigest.html

Мне любопытно; какие телефоны будут поддерживать SHA-256? В документах строка о NoSuchAlgorithmException заставляет меня думать, что некоторые телефоны не поддерживают все алгоритмы. Прежде чем приступить к реализации этого для приложения и ожидать, что оно будет работать одинаково на всех телефонах, я хочу знать, знает ли кто-нибудь что-нибудь об этом...?

Мне кажется странным, что у класса MessageDigest нет некоторых констант для выбора алгоритма, который вы хотите использовать.

4b9b3361

Ответ 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