开发者社区> 问答> 正文

java这种加密方法,怎么解密得到原来的密码 - java报错

    public String encryptPassword(String username, String password, String salt)
    {
        return new Md5Hash(username + password + salt).toHex().toString();
    }

展开
收起
montos 2020-06-04 14:01:31 866 0
1 条回答
写回答
取消 提交回答
  • "

    md5算法是不可逆的,没有办法得到原文

    ######<div class=""ref"">

    引用来自“韦小仇”的评论

    md5算法是不可逆的,没有办法得到原文

    MD5不可逆?

    没有什么是彩虹表做不到的,如果有,那就是彩虹表不全。 

    ######如果有salt,够咸够复杂,彩虹表暂时失效。######

    答案是肯定不行的!即MD5算法处理过的字符是不可逆的,因为其根本不是一种加密算法,而是一种摘要算法,楼主明白什么叫摘要吗?也就是原文的一部分,md5的意思并不是加密,而是找出代表此密码的唯一标识。打比方说123456这组密码用001来表示。23456用002来表示,而这个001是不可能反向得到123456的,因为他们没有因为所以的关系只有逻辑关联,当然md5是则是独一无二的。即123456这个密码只会生成唯一的MD5,也就是如果001是123456的MD5,那除了1233456能生成001,其它任何密码都不可能生成同样的001。这也是md5被用于密码的原因。

    md5被用为密码,因为密码在存为md5后,存的不是密文,而是其摘要,也就 是你输入123456转成md5为001存到数据库里下次只有输入123456才能生成001这个md5,才会表示输入正确,如果输入的是其它值则一定生成不了md5为001的值。这是因为md5的唯一性决定的。

    ######

    没法得到,不过你可以重新设置一个呀,反正有salt,利用这个得到一个新的密码,然后数据库里替换下就好了

    "
    2020-06-04 14:28:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java开发手册(嵩山版)灵魂17问 立即下载
\"视频服务特色解决方案——直播连麦与点播加密 \" 立即下载
量子加密通信技术 立即下载