public String encryptPassword(String username, String password, String salt) { return new Md5Hash(username + password + salt).toHex().toString(); }
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,利用这个得到一个新的密码,然后数据库里替换下就好了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。