-1
我一直在PHP OpenSSL的内置方法的一些问题。我试图通过尝试不同的方法来缩小问题范围。我想以下几点:PHP的OpenSSL加密与命令行Encypt
$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/>");
然而,上面的输出是:
hn%2FZkGKl9EQ7XgFFytcPkTPxJST2jCKEVDoojmkz8xs%3D
hn%2FZkGKl9EQ7XgFFytcPkdQESeAPqlFNwJivth28m9o%3D
正如你可以看到,他们开始在输出的中间出现分歧。对于内置或命令行,我的配置是否有错?
第三方编辑:
使更多的输出感:
Base64编码:
hn/ZkGKl9EQ7XgFFytcPkTPxJST2jCKEVDoojmkz8xs=
hn/ZkGKl9EQ7XgFFytcPkdQESeAPqlFNwJivth28m9o=
在十六进制:
867FD990 62A5F444 3B5E0145 CAD70F91 33F12524 F68C2284 543A288E 6933F31B
867FD990 62A5F444 3B5E0145 CAD70F91 D40449E0 0FAA514D C098AFB6 1DBC9BDA
检查二进制很明显,前16个字节是所述第一块和相同,则第二个16个字节是所述第二块和不同。所以这可能是一个加密模式问题,即要加密的数据的末尾部分是不同的。 – zaph
一个简单的在线方式来检查加密是Cryptomathic [AES计算器](http://extranet.cryptomathic.com/aescalc)。还有其他算法的其他计算器。 – zaph