Groovy无法解密密码

时间:2015-01-07 03:22:54

标签: encryption groovy decode encode

目前,我正在使用编码方法对密码进行编码,这里是:

static encode = { String s ->
        print(s)
        MessageDigest md = MessageDigest.getInstance('SHA')
        print(md)
        md.update s.getBytes('UTF-8')
        def result = Base64.encodeBase64 md.digest()
        new String(result, "UTF-8");
    }

那么,有没有可能解密它的方法?我尝试了decodeBase64()并得到了结果:

[64, -67, 0, 21, 99, 8, 95, -61, 81, 101, 50, -98, -95, -1, 92, 94, -53, -37, -66, -17]

我接近成功吗?如何将其转换为字符串?

1 个答案:

答案 0 :(得分:2)

没有SHA是单向散列,这意味着您无法获得给定散列的原始数据。单向散列使得存储人们的密码更加安全,因为即使有人获得了散列的副本,他们也无法轻易地反转散列并检索密码。

Base64是一种将二进制数据编码为ASCII文本的编码机制。它不是加密。如果你给我一个Base64编码的字符串,任何人都可以解码它并获得原始消息。一个很大的线索,它不安全是没有给Base64的密钥,这意味着它不会阻止任何人解码它。

您不应使用SHA存储密码。这些天太暴力了,所以你的密码很容易解码。 MD5和SHA不是安全的哈希值。您需要使用bcrypt或其他可调算法。