【发布时间】:2016-12-15 11:00:46
【问题描述】:
假设我已经像这样加密了 SHA1 密码
String pass = "f6ce584e7b4ff5253eed4a2ea2b44247";
我想要这样的条件:
if (pass.equals("userinput")){
System.out.println("success");
}
请有人帮助我制定适当的条件/功能来比较用户输入和加密密码之间的值。您的帮助将不胜感激。谢谢
【问题讨论】:
-
首先了解如何获取
"userinput"的SHA1 哈希(javax.crypto包可以提供帮助),将结果转换为十六进制字符串并进行比较。 -
事实上,最好不要以纯文本形式传递用户密码。如果这是在网站上,您应该使用 Javascript 进行 sha1 散列并将其发送已散列。那么比较就很容易了。
-
@RealSkeptic 所以 MIM 可以只获取哈希而不是密码?这和发送明文密码一样安全。
-
@Durandal 不完全是。考虑社会工程学。如果您知道明文密码,则可能在同一用户使用的其他服务上相同,可能使用不同的哈希算法。但是,当然,在现实生活中,您会用挑战来加盐密码。事实上,你加盐两次 - 用于存储和每次登录。
标签: java encryption sha1