example - sha 256 java maven
Excepción al llamar a MessageDigest.getInstance("SHA256") (2)
Tengo un código que funciona bien en Android. Cuando lo porté a mi máquina de Windows de 64 bits con JRE 1.6, el código no funcionó.
Cuando corro la siguiente línea de código:
final MessageDigest digest = MessageDigest.getInstance("SHA256")
Me sale la siguiente excepción:
java.security.NoSuchAlgorithmException: SHA256 MessageDigest no disponible en sun.security.jca.GetInstance.getInstance (fuente desconocida) en java.security.Security.getImpl (fuente desconocida) en java.security.MessageDigest.getInstance (fuente desconocida)
Encontré en Internet personas que afirman que es posible usar SHA256 con el proveedor criptográfico estándar que viene con Sun JRE y personas que dicen que necesito usar otro proveedor como, por ejemplo, Bouncy Castle.
Preferiría no usar un proveedor diferente. ¿Es posible hacerlo funcionar?
Cuando tenga dudas sobre qué algoritmos puede usar para un servicio JCA, su primer puerto de llamada debe ser la Documentación de nombre de algoritmo estándar JCA. Los algoritmos que se garantiza son compatibles con el servicio MessageDigest en una JVM compatible con JCA son:
-
MD2
-
MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
Es común que los proveedores proporcionen alias para estos algoritmos, razón por la cual probablemente funcione con Bouncy Castle, pero debe seguir estos si es posible para maximizar la portabilidad.
Si cambia su código a lo siguiente, funcionará como se esperaba:
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
SHA-256 debería ser el parámetro para getInstance ()
Enlace para la lista de algoritmos admitidos para el resumen de mensajes