Luego de de esta prolongada recopilación de datos dimos con la solución esta duda que presentan ciertos de nuestros usuarios. Te compartimos la respuesta y deseamos que resulte de gran apoyo.
Solución:
SHA-256 no es una “codificación”, es un hash unidireccional.
Básicamente convertirías el string en bytes (por ejemplo, usando text.getBytes(StandardCharsets.UTF_8)
) y luego hash los bytes. Tenga en cuenta que el resultado del hash sería además ser datos binarios arbitrarios, y si quiere representar eso en un stringdeberías usar base64 o hexadecimal… no intenta usar el String(byte[], String)
constructor.
p.ej
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes(StandardCharsets.UTF_8));
Creo que la solución más fácil es usar Apache Common Codec:
String sha256hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex(stringText);
Otra alternativa es Guava, que tiene un conjunto de utilidades Hashing fáciles de usar. Por ejemplo, hacer un hash string usando SHA256 como hexadecimalstring simplemente harías:
final String hashed = Hashing.sha256()
.hashString("your input", StandardCharsets.UTF_8)
.toString();
Si conservas alguna cuestión y capacidad de innovar nuestro ensayo te inspiramos añadir una glosa y con placer lo interpretaremos.