我应该如何创建我的 DES 密钥?为什么 7 个字符的字符串不够?

2024-01-13

我在理解密码学中的密钥长度要求方面遇到了一些困难。我目前正在使用 DES,我认为它是 56 位...现在,通过将 8 个字符的密码转换为byte[]我的密码学有效。如果我使用 7 位密码,则不会。

现在,如果我错了,请原谅我,但这是因为 ASCII 字符是 7 位,因此 8 * 7 = 56 位吗?

这对我来说似乎不太合适。如果我想使用密钥,为什么我不能只传递我的密钥的加盐哈希值,即 MD5 哈希值?

我确信这很简单,但我无法清楚地了解发生了什么。


DES 使用 56 位密钥:8 个字节,其中每个字节中的一位是奇偶校验位。

但是,一般来说,建议使用公认的、众所周知的密钥派生算法将文本密码转换为对称密码密钥,而不管算法如何。

PKCS #5 中描述的 PBKDF2 算法(RFC 2898 http://www.faqs.org/rfcs/rfc2898.html)是一种广泛使用的密钥导出函数,可以生成任意长度的密钥。 PBKDF2 的核心是通过哈希函数将盐和密码组合起来,生成实际的密钥。哈希值会重复多次,因此对于攻击者来说,尝试最常见密码“字典”中的每个条目将是昂贵且缓慢的。

旧版本 PBKDF1 可以生成 DES 加密的密钥,但不建议新应用程序使用 DES 和 PBKDF1。

大多数具有加密支持的平台都在其 API 中包含 PKCS #5 密钥派生算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何创建我的 DES 密钥?为什么 7 个字符的字符串不够? 的相关文章

随机推荐