解密哈希密码



我有以下代码来加密密码,但是当我试图解码它时,我没有得到预期的结果。

BASE64Encoder encoder = new BASE64Encoder();
String afterhex=toSHA1("mypassword".getBytes());
String encodedBytes = encoder.encodeBuffer(afterhex.getBytes());
public static String toSHA1(byte[] convertme) {
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("SHA-1");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return new String(md.digest(convertme));
}

例如,如果你试图编码,吉尔你应该得到LQBIF2TS0FSDYtGjaNmC2gl/klw=

对于恢复它有什么建议吗:)

哈希算法不是加/解密算法。

哈希是将可变长度的大数据集(例如message)映射到固定长度的较小数据集(哈希)的单向过程。长度取决于哈希算法。

并且不可能执行从哈希返回到您的消息的反向操作。

即使有可能找到一个消息生成相同的哈希(例如使用彩虹表;对于较弱的散列算法(如MD5)更容易),您永远不会知道是否与用于生成散列的原始消息相同。防止发现(猜测)生成相同哈希值的消息(密码)的方法之一是在对消息(密码)进行哈希时使用盐。

编辑

我也会推荐任何Bruce Schneier的书,例如;密码学工程:设计原理和实际应用(以一种非常漂亮且易于理解的方式编写),将详细描述密码学和哈希。

最新更新