Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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
PHP OpenSSL加密与命令行加密_Php_Pyopenssl - Fatal编程技术网

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

我在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_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);