我有一个使用以下方法编码的字符串,有没有办法将此字符串解码回其原始值?谢谢。
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;
}
SHA-256是一种加密(单向)哈希函数,因此没有直接的方法对其进行解码。加密哈希函数的全部目的是您不能撤消它。
您可以做的一件事是蛮力策略,您可以在其中猜测要进行哈希处理的内容,然后使用相同的函数对其进行哈希处理,看看是否匹配。除非很容易猜测散列数据,否则可能要花很长时间。
您可能会发现有趣的问题“ 哈希密码和加密密码之间的区别 ”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句