如何将口令转换为128位/256位WEP密钥?

3

我有一个口令,想从中生成128位或256位的WEP密钥。请提供指导或链接,以了解如何从明文生成WEP密钥。


3
你为什么会考虑使用WEP?它几乎和不加密一样不安全!如果你想要安全,必须使用WPA! - ThiefMaster
这是两者的组合:(void *)0 - Kerrek SB
2
@ThiefMaster:楼主并没有说她想要使用WEP。她只是想创建一个WEP密钥。 - Kerrek SB
1
@ThiefMaster 这里可能只是一些算法上的好奇心在起作用。尽管 OP 也许同样对了解其缺陷感兴趣。WEP 的维基百科页面可能是一个不错的起点。http://en.wikipedia.org/wiki/Wired_Equivalent_Privacy - Bart
3个回答

2
希望原帖作者现在已经找到答案了,但我发现这些信息非常难以查找,因为它们已经过时。正如在此线程和其他线程中多次提到的那样,WEP非常不安全,但由于某种原因,没有人愿意给出直截了当的答案,也有很多建议去学习其他东西。
对于最初的问题,128位密钥是一个64字节字符串的MD5哈希值。这个64字节的字符串是ASCII密码短语一遍又一遍地重复,然后截断为64字节。例如,在SQL Server中,它会显示为:
SELECT CAST(HASHBYTES('MD5', LEFT(REPLICATE(@phrase, CEILING(64.0 / LEN(@phrase))), 64)) AS varbinary(13))

0

首先阅读关于密钥派生函数的内容。高质量的现代KDF包括scrypt, bcryptPBKDF2。它们都有开源实现。

对于PBKDF2,您可以指定派生密钥的长度。对于scrypt,您可以选择输出的前N位并将其用作密钥。

如果不使用KDF,最简单的方法是将您的口令与24位IV(初始化向量)连接起来并形成一个RC4密钥。

请注意,WEP将您的密钥和IV组合在一起以生成RC4流,该流键入数据流;因此,WEP存在许多缺点,使其无法提供足够的数据机密性。您可以通过跟随维基百科页面链接来了解更多信息。

不要使用加密哈希作为派生密钥。


0
给其他人提醒一下,我想重新生成一个我们在2000年代初使用的WEP密码短语。对我来说,有效的方法是将密码短语重复填充到64个字符(无换行符),然后使用md5sum计算结果。我用一个bash脚本来实现这个测试,使用yes来重复密码短语,tr来去除yes的换行符,并使用pv将流截断为64字节。然后调用md5sum来计算结果。
#!/bin/bash
read -p passphrase?: -s passphrase
[ -z "$passphrase" ] && echo "Need a passphrase!" && exit
yes $passphrase | tr -d '\n' | pv -s 64 -S | md5sum
unset passphrase

以上成功地输出了我们在2000年代初使用的WPA PSK,只要提供我们使用的原始密码短语即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接