Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix Openssl RC4-密码为纯文本_Unix_Encryption_Openssl_Passwords_Rc4 Cipher - Fatal编程技术网

Unix Openssl RC4-密码为纯文本

Unix Openssl RC4-密码为纯文本,unix,encryption,openssl,passwords,rc4-cipher,Unix,Encryption,Openssl,Passwords,Rc4 Cipher,我正在尝试使用RC4和openssl进行加密。我只能用十六进制而不是明文的密钥与在线密码工具匹配结果 将密码选项与明文一起使用-不匹配。 #echo-ne“stackoverflow”| openssl rc4-通行证:“rc4cipher”-nopad-nosalt | xxd-p 结果:8189898ec30bd96a81bca0e293 获取密码的对称密钥 #echo-ne“stackoverflow”| openssl rc4-通行证:“rc4cipher”-nopad-nosalt-p

我正在尝试使用RC4和openssl进行加密。我只能用十六进制而不是明文的密钥与在线密码工具匹配结果

将密码选项与明文一起使用-不匹配。

#echo-ne“stackoverflow”| openssl rc4-通行证:“rc4cipher”-nopad-nosalt | xxd-p

结果:8189898ec30bd96a81bca0e293

获取密码的对称密钥

#echo-ne“stackoverflow”| openssl rc4-通行证:“rc4cipher”-nopad-nosalt-p

键=1E8B649064CC6657312EE7346ED410A4

使用上述密码的六位键(-k选项)-匹配。

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

结果:8189898ec30bd96a81bca0e293

我可以将我的结果与在线工具进行匹配,方法是将键用作十六进制,而不是纯文本

有人能帮我选择使用openssl吗

谢谢


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

这就是OpenSSL(命令行)在下面所做的:它使用了一种称为
EVP\u BytesToKey
的脆弱的OpenSSL专有算法。这基本上只与OpenSSL实现或兼容库兼容


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

谢谢Maarteen,要求我的结果与在线工具相匹配。正如您正确地提到的,当我使用十六进制代码作为密钥时,我可以完美地匹配,但我想要一个使用明文作为密钥的选项。function=arcfour&mode=stream&key=rc4cipher&key_type=plain&iv=&phone=b91fa0ab46abb20751c8c9b1d828e8fb8356adcb&do=表格提交这是一个愚蠢的要求。但是,您可以将文本编码为字节,然后编码为十六进制,然后重试。这些在线工具经常会出现编码错误,因此很难完全匹配所有可能的输入。有人知道openssl选项将密钥保留为纯文本吗?如何将密钥传递为纯文本而不是十六进制。