web-dev-qa-db-fra.com

Est-ce que chaque Android téléphone prend en charge SHA-256

Alors, lisez cet article: Comment puis-je calculer le hachage SHA-256 d'une chaîne dans Android?

et les documents: http://developer.Android.com/reference/Java/security/MessageDigest.html

Je suis curieux; quels téléphones prendront en charge SHA-256? Dans les documents, la ligne concernant la "NoSuchAlgorithmException" me fait penser que certains téléphones ne prennent pas en charge tous les algorithmes. Avant de l'implémenter pour une application et de m'attendre à ce qu'elle fonctionne de la même manière sur tous les téléphones, je veux savoir si quelqu'un en sait quelque chose ...?

Je trouve étrange que la classe MessageDigest n'ait pas de constantes pour choisir l'algorithme que vous souhaitez utiliser.

35
joshkendrick

Tous les appareils Android prennent en charge SHA-256. Le NoSuchAlgorithmException indique qu'un algorithme demandé est introuvable et est nécessaire car la méthode prend un argument String pour le nom de l'algorithme. Si vous avez passé "foo-256", le seul recours de la méthode est de lancer un NoSuchAlgorithmException car, pour des raisons que je ne comprends pas, il n'y a pas d'algorithme appelé "foo-256". En supposant que vous passez dans un nom dont vous êtes sûr qu'il s'agit d'un algorithme que Android peut utiliser, vous ne verrez jamais cette exception.

30
Chris Cashwell

Ajoutez NoSuchAlgorithmException comme ci-dessous:

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);
}
18
Soheil

SHA-256withRSA n'est PAS pris en charge dans les anciennes versions Android (vérifiées de la même manière Android 4.0.3, 4.1.1). J'ai rencontré ce problème lors de l'utilisation de JSCEP. L'algorithme de résumé renvoyé par le serveur SCEP est SHA-256. Mais SHA-256withRSA n'est présent dans aucun SecurityProviders par défaut dans ces versions Android Android. Trouvé un lien pertinent: quelles versions de Android supporte quels algorithmes de signature de package?

Ce lien montre que SHA-256withRSA a été ajouté plus tard: https://Android-review.googlesource.com/4436

5
garnet

Selon le Android Documentations pour MessageDigest , SHA-256 est pris en charge depuis l'API 1.

enter image description here

4
Megaetron