Tengo una cadena que se codificó utilizando el siguiente método, ¿hay alguna manera de decodificar esta cadena de nuevo a su valor original? Gracias.Cómo descifrar cadenas encriptadas SHA-256?
public synchronized String encode(String password)
throws NoSuchAlgorithmException, IOException {
String encodedPassword = null;
byte[] salt = base64ToByte(saltChars);
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
digest.update(salt);
byte[] btPass = digest.digest(password.getBytes("UTF-8"));
for (int i = 0; i < ITERATION_COUNT; i++) {
digest.reset();
btPass = digest.digest(btPass);
}
encodedPassword = byteToBase64(btPass);
return encodedPassword;
}
private byte[] base64ToByte(String str) throws IOException {
BASE64Decoder decoder = new BASE64Decoder();
byte[] returnbyteArray = decoder.decodeBuffer(str);
return returnbyteArray;
}
private String byteToBase64(byte[] bt) {
BASE64Encoder endecoder = new BASE64Encoder();
String returnString = endecoder.encode(bt);
return returnString;
}
Para decirlo de otra manera, si pudieras invertir esta función fácilmente, eso sería realmente algo malo. –
Si es tan difícil regenerar los datos reales o lo dice Brute-force strategy for regeneration, ¿cómo http://md5decrypt.net/en/ & número de otras herramientas en línea regenera la cadena actual? – Safeer
@Safeer Tienen una lista de las salidas de la función hash y luego buscan cuál fue la entrada. En realidad no están descifrando; en esencia, están adivinando y luego siguen los resultados. –