作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在理解密码学中的 key 长度要求时遇到了一些困难。我目前正在使用 DES,我认为它是 56 位...现在,通过将 8 个字符的密码转换为 byte[]
我的密码学有效。如果我使用 7 位密码,则不会。
现在,如果我错了,请原谅我,但这是因为 ASCII 字符是 7 位,因此 8 * 7 = 56 位吗?
这对我来说似乎不正确。如果我想使用 key ,为什么我不能只传递我的 key 的加盐哈希,即 MD5 哈希?
我确信这很简单,但我无法清楚地了解发生了什么。
最佳答案
DES 使用 56 位 key :8 个字节,其中每个字节中的一位是奇偶校验位。
但是,通常建议使用公认的、众所周知的 key 派生算法将文本密码转换为对称密码 key ,而不管算法如何。
PKCS #5 ( RFC 2898 ) 中描述的 PBKDF2 算法是一种广泛使用的 key 派生函数,可以生成任意长度的 key 。 PBKDF2 的核心是通过哈希函数将盐和密码结合起来,以生成实际的 key 。散列被重复多次,因此攻击者尝试在她的最常见密码“字典”中的每个条目既昂贵又缓慢。
旧版本 PBKDF1 可以为 DES 加密生成 key ,但不建议将 DES 和 PBKDF1 用于新应用程序。
大多数具有加密支持的平台在其 API 中都包含 PKCS #5 key 派生算法。
关于security - 我应该如何创建我的 DES key ?为什么 7 个字符的字符串不够用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965500/
我是一名优秀的程序员,十分优秀!