Groovy 无法解密密码

Groovy cannot decrypt password

目前我使用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]

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

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

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

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