如何从此方法中反转此输出? (这样我就可以看到明文了) 我没有看到任何密钥被使用。
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;
}
答案 0 :(得分:6)
你做不到。 SHA系列是哈希算法;也就是说,它们是产生哈希或消息摘要的单向加密算法。没有办法回来。散列是来自任何长度的消息的固定长度结果,其设计目标是找到产生相同散列值的两个消息在计算上是不可行的;因此,对于所有意图,哈希可被视为识别消息。但是你无法返回并从中检索消息。
哈希是未加密的。可以使用它们创建键控构造,例如消息验证代码或MAC。
该方法实际上命名不佳 - 这本身并不是“加密”。