我看到哈希和加密算法之间存在很多混淆,我希望听到一些更专业的建议:
何时使用哈希与加密
什么使哈希或加密算法不同(从理论/数学水平),即什么使哈希不可逆(没有彩虹树的帮助)
以下是一些类似的 SO问题,没有像我想要的那样详细说明:
有人告诉我他见过软件系统:
那可能吗?我认为解密MD5哈希是不可能/不可行的.
我知道有MD5词典,但是有没有实际的解密算法?
目前对这个问题的最高投票表明:
另一个不是安全问题的安全问题虽然与安全相关,但却是完整的,并且很难解决散列密码和加密密码之间的区别.最常见于代码中的程序员试图提供不安全的"提醒我密码"功能.
究竟是什么区别?我总是认为哈希是一种加密形式.海报所指的不安全功能是什么?
我有一个使用以下方法编码的字符串,有没有办法将此字符串解码回原始值?谢谢.
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 …Run Code Online (Sandbox Code Playgroud)