【问题标题】:Groovy cannot decrypt password [duplicate]Groovy无法解密密码[重复]
【发布时间】:2015-03-04 20:18:54
【问题描述】:

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

我离成功很近了吗?怎么转成字符串?

【问题讨论】:

    标签: encryption groovy decode encode


    【解决方案1】:

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

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

    您不应使用 SHA 存储密码。如今,暴力破解太容易了,因此您的密码很容易解码。 MD5 和 SHA 不是安全哈希。您需要使用 bcrypt 或其他可调算法。

    【讨论】:

    • 感谢您的好建议。我会尝试另一种方式而不是解密。
    猜你喜欢
    • 2013-05-23
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2017-01-07
    • 2015-10-17
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多