Openssl RC4 - 密码为纯文本

问题描述 投票:0回答:1

我正在尝试使用openssl使用RC4加密。我可以将结果与在线密码工具匹配,只能将密钥作为十六进制而不是明文。

使用明文密码选项 - 不匹配。

#echo -ne“stackoverflow”| openssl rc4 -pass传递:“rc4cipher”-nopad -nosalt | xxd -p

结果:8189898ec30bd96a81bca0e293

获取密码的对称密钥

#echo -ne“stackoverflow”| openssl rc4 -pass传递:“rc4cipher”-nopad -nosalt -p

关键= 1E8B649064CC6657312EE7346ED410A4

使用上述密码的六进制密钥(-k选项) - MATCHES。

echo -ne“stackoverflow”| openssl rc4 -K“1E8B649064CC6657312EE7346ED410A4”-nopad -nosalt | xxd -p

结果:8189898ec30bd96a81bca0e293

我可以使用密钥作为十六进制而不是纯文本将我的结果与在线工具相匹配。

plain_text hexa

有人可以选择与openssl一起使用吗?

谢谢,

unix encryption openssl passwords rc4-cipher
1个回答
1
投票

密钥应包含随机二进制数据。它们不应该由文本组成。如果您需要执行基于密码的加密,则需要使用密码哈希,或者更确切地说,使用基于密码的密钥派生函数将密码转换为密钥。常见的PBKDF是bcrypt,scrypt,PBKDF2和Argon2。

这就是OpenSSL(命令行)所做的事情:它使用一种名为EVP_BytesToKey的弱OpenSSL专有算法。这基本上只与OpenSSL实现或兼容性库兼容。

大多数在线工具(您不应该使用它们来验证最终的任何实现)只是使用字符编码将文本转换为二进制,例如UTF-8,Windows-1252或任何其他 - 通常是未指定的 - 编码。这不安全;它与大多数在线发现的点击诱饵加密工具一样具有脑力。

© www.soinside.com 2019 - 2024. All rights reserved.