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 或其他可调算法。
目前我使用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 或其他可调算法。