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.
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.
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);
}
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
Selon le Android Documentations pour MessageDigest , SHA-256 est pris en charge depuis l'API 1.