PHP OpenSSL加密与命令行加密
我在PHP OpenSSL的内置方法方面遇到了一些问题。我试图通过尝试不同的方法来缩小问题的范围。我正在尝试以下方法:PHP OpenSSL加密与命令行加密,php,pyopenssl,Php,Pyopenssl,我在PHP OpenSSL的内置方法方面遇到了一些问题。我试图通过尝试不同的方法来缩小问题的范围。我正在尝试以下方法: $input = "this is a test string"; $opensslCommand = "echo \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv); $first = openssl_encryp
$input = "this is a test string";
$opensslCommand = "echo \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv);
$first = openssl_encrypt($input, "AES-128-CBC", $hashing_secret, 0, $iv);
$second = exec($opensslCommand);
print(urlencode($first) . "<br/>");
print(urlencode($second) . "<br/>");
正如你所看到的,它们开始在输出的中间发散。内置或命令行的配置是否错误
第三方编辑:让输出更有意义: Base64编码:
hn/ZkGKl9EQ7XgFFytcPkTPxJST2jCKEVDoojmkz8xs=
hn/ZkGKl9EQ7XgFFytcPkdQESeAPqlFNwJivth28m9o=
十六进制:867FD990 62A5F444 3B5E0145 CAD70F91 33F12524 F68C2284 543A288E 6933F31B
867FD990 62A5F444 3B5E0145 CAD70F91 D40449E0 0FAA514D C098AFB6 1DBC9BDA
echo
是罪魁祸首。有一个特定参数可以与echo一起使用,以抑制它附加到输入字符串的换行:-n
。事实证明,这是我输入到openssl的管道
$opensslCommand = "echo -n \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv);
检查二进制文件的命令是否正确?很明显,前16个字节是第一个块且相同,后16个字节是第二个块且不同。因此,这可能是一个加密模式问题,即要加密的数据的结尾部分不同。一种简单的在线检查加密的方法是使用Cryptomathic。还有其他用于其他算法的计算器。
$opensslCommand = "echo -n \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv);