Java 如何反转此方法的输出?
如何从该方法中反转此输出?(这样我才能看到明文) 我没看到有人用钥匙Java 如何反转此方法的输出?,java,encryption,base64,md5,sha1,Java,Encryption,Base64,Md5,Sha1,如何从该方法中反转此输出?(这样我才能看到明文) 我没看到有人用钥匙 public String encrypt(String plaintext) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException e) { } try { md.update(plaint
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;
}
你不能。SHA家族是散列算法;也就是说,它们是产生散列或消息摘要的单向加密算法。没有回头路了。散列是来自任意长度的消息的固定长度结果,其设计目标是在计算上不可能找到产生相同散列值的两条消息;因此,就所有意图而言,散列可以被视为标识消息。但是您不能返回并从中检索消息 散列是无眼的。有一些键控结构可以使用它们生成,例如消息身份验证代码或MAC
该方法的名称实际上很糟糕——这本身并不是“加密”。旁白:您尝试使异常静音(这几乎肯定表明存在致命的编程错误,因此不应被忽略,也不应发生),但如果第一个块失败,则继续使用
md
,它将为null
,因此,无论如何,您都会因空指针异常而崩溃,或者,如果第二个块失败,您将默默地返回错误的哈希。如果这样做是为了避免检查异常带来的麻烦,请从catch
块抛出一个更有意义(未检查)的异常。