如何从此方法反转此输出?(这样我就可以看到明文了)我没有看到任何密钥被使用。
public String encrypt(String plaintext) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA");
} catch (NoSuchAlgorithmException e) {
}
try {
md.update(plaintext.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
}
byte raw[] = md.digest();
String hash = (new BASE64Encoder()).encode(raw);
return hash;
}
发布于 2013-10-19 07:54:07
不能。SHA家族是哈希算法;也就是说,它们是产生哈希或消息摘要的单向加密算法。没办法回去了。散列是由任意长度的消息产生的固定长度,其设计目的是在计算上不可能找到两个产生相同哈希值的消息;因此,在所有意图中,哈希都可以看作是标识消息。但你不能回去取回它的信息。
散列是不键的。有一些关键的结构可以用它们来制作,例如消息认证代码或MAC。
实际上,这个方法的名称很差--这本身并不是“加密”。
https://stackoverflow.com/questions/19467957
复制