studio messagedigest example decrypt android hash sha message-digest

messagedigest - ¿Todos los teléfonos Android son compatibles con SHA-256?



messagedigest java example (3)

Agregue NoSuchAlgorithmException de la siguiente manera:

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

Entonces, leyendo esta publicación: ¿Cómo puedo calcular el hash SHA-256 de una cadena en Android?

y los documentos: http://developer.android.com/reference/java/security/MessageDigest.html

Soy curioso; ¿Qué teléfonos son compatibles con SHA-256? En los documentos, la línea sobre la ''NoSuchAlgorithmException'' me hace pensar que algunos teléfonos no son compatibles con todos los algoritmos. Antes de ir a implementar esto para una aplicación y esperar que funcione igual en todos los teléfonos, quiero saber si alguien sabe algo al respecto ...

Me resulta extraño que la clase MessageDigest no tenga algunas constantes para elegir el algoritmo que desea usar.


SHA-256withRSA NO es compatible con versiones anteriores de Android (se verificó lo mismo en Android 4.0.3, 4.1.1). He experimentado este problema al usar JSCEP. El algoritmo de resumen devuelto por el servidor SCEP es SHA-256. Pero SHA-256withRSA no está presente en ningún SecurityProviders predeterminado en esas versiones de Android. Encontrado un enlace relevante: ¿Qué versiones de Android admiten qué algoritmos de firma de paquetes?

Este enlace muestra que SHA-256withRSA se agregó más tarde: https://android-review.googlesource.com/44360


Todos los dispositivos Android son compatibles con SHA-256. La NoSuchAlgorithmException indica que no se pudo encontrar un algoritmo solicitado y es necesario porque el método toma un argumento String para el nombre del algoritmo. Si pasó en "foo-256", el único recurso del método es lanzar NoSuchAlgorithmException porque, por razones que no entiendo, no existe un algoritmo llamado "foo-256". Suponiendo que está pasando un nombre del que está seguro es un algoritmo que Android puede usar, nunca verá esa excepción.