在我们的项目中,我必须使用带有以下数据的算法 AES 128 CBC:
KEY = "abcdef0123456789abcdef0123456789"
IV =“00000000000000000000000000000000”
要加密的文本是
2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~
预期的结果是
0D 58 35 AF EB EE 04 C6 DC 24 21 53 8D B7 C3 8A 12 83 97 0E B3 1F 21 A4 7D 2E 3C C6 23 D2 9E F0 46 12 79 C7 AC F9 3B 03 1B E2 B6 9C E4 5C 93 39 5 57 F2 9E F6 09 F0 19 EE C9 75 98 3A 03 B5 37 62 2D 7E 0F 19 6B E1 48 F1 C7 CB B8 8E 60 2A
结果文本的长度为 160 个字符。
我尝试使用许多算法,但我的所有结果都不同。
您会用自己的方法加密文本并使用预期结果进行验证吗?
你会粘贴你的结果吗?
这是我的测试:
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$data_to_encrypt = "2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~";
$key128 = "abcdef0123456789abcdef0123456789";
$iv = "0000000000000000"."0000000000000000";
echo "data_to_encrypt: ".$data_to_encrypt."<br/>";
if (($res = mcrypt_generic_init($cipher, $key128, $iv)) != -1)
{
// PHP pads with NULL bytes if $cleartext is not a multiple of the block size.
$cipherText = mcrypt_generic($cipher,$data_to_encrypt);
mcrypt_generic_deinit($cipher);
$data_encrypted = strtoupper(bin2hex($cipherText));
echo "result encrypt: ".$data_encrypted."<br/>";
echo "len: ".strlen($data_encrypted)."<br/>";
}
这是我的回答:
data_to_encrypt: 2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~ result encrypt: C9A4E600BAC6FC4F2077FF62DDB5F9BEAB1C9C567A98E6B81373711A4BC0FFE1748F5E26886896AB87CD375567C5466E6A9F4C079AD19B592E080896BCFDB52324F342A9F94AE71FADB1F6820EB57F7B len: 160
提前感谢您的帮助和时间。