1
17
这是一个坏主意——您应该像nulluserexception所说的那样使用一个普通的加密散列,如sha-1。
然而,它
将
便于携带-文档用于
|
2
5
依靠非加密函数来服务与安全相关的目的通常是一个坏主意。因为您永远无法确定使用哪个实现(并且将来将使用哪个实现)来计算字符串的哈希代码,所以您应该更喜欢加密的安全哈希代码算法。我建议使用sha-1或sha-256。 http://www.bouncycastle.org/ 有许多哈希算法的实现。 |
3
5
更重要的是,考虑到
加密散列在Java标准库中可用,通过 java.security.MessageDigest .
补充
:还有一个复杂的问题:直接散列密码是个坏主意。原因是攻击者可以尝试所有可能的密码(例如字典单词、人名等)。此问题的标准解决方案是将密码与
随机的
字符串称为
salt
在计算散列值之前:你做一些像
通常,salt是在用户选择他/她的密码时随机生成的,它存储在用户数据库的密码散列旁边,但是根据您所展示的方案,没有这样的东西。根据您的设计,使用文件名作为salt是合理的:
|
4
2
老实说,我不知道JAVA如何抵御碰撞。
因为您在这里处理密码,所以应该使用像sha1这样的加密散列。 |
5
2
散列数据并不像你想象的那么难,最好使用真正的散列算法。如果您有一个包含密码的字节数组,您可以这样做。如果要从字符串中获取字节数组,请确保在调用getbytes()时指定编码(即utf-8); 下面是一个使用MD5的简单示例。
|
6
1
我担心这个代码是不可移植的。不能保证一个JVM将产生与另一个JVM相同的哈希值。这似乎很危险。 |
7
1
以下是string.hashcode()的实现:
公共可用 here … 这实际上是VM无关的,而且它过去还没有依赖Java版本。实现保持不变。 碰撞安全没有问题,但是出于明显的原因,将其用于加密目的是一个坏主意。 |
8
0
问题是哈希值只有32位。太短了。一个有基础的孩子能在一秒钟内打破它。 MD5的长度是128位,现在被认为是弱的。 |
Farid · 限制django每个客户的访问 2 年前 |
josegp · 在Nmap中-p-tag是什么意思 2 年前 |
kramer65 · 如何根据网站用户在S3上添加非公共网站文件? 6 年前 |
derf26 · 如何阻止React Web包包含包中的脚本。json 6 年前 |
user8663960 · 最好也是最简单的方法是保护登录表单的安全 6 年前 |