代码如下:<?php$cipher = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
//IV在ECB模式下失效
$iv = '12345678';
//24字节长度的Key
$key = '123456789123456789123456';
printf("<p>192 bit key: %s</p>",bin2hex($key));
$plaintext ="test";
printf("<p>Plain Text: %s</p>",$plaintext);
//Triple DES 加密
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
$cipherText = mcrypt_generic($cipher,$plaintext);
//mcrypt_generic_deinit($cipher);
// 以十六进制字符显示加密后的字符
printf("<p>3DES encrypted:\n%s</p>",bin2hex($cipherText));
}
//Triple DES 解密
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
$decrypted_data = mdecrypt_generic($cipher,$cipherText);
mcrypt_generic_deinit($cipher);
printf("<p>3DES decrypted:\n%s</p>",$decrypted_data);
}?>显示结果:192 bit key: 313233343536373839313233343536373839313233343536Plain Text: test3DES encrypted: 2dcb38a59002856d3DES decrypted: -?卪大家帮忙看看是怎么回事,谢了。
//IV在ECB模式下失效
$iv = '12345678';
//24字节长度的Key
$key = '123456789123456789123456';
printf("<p>192 bit key: %s</p>",bin2hex($key));
$plaintext ="test";
printf("<p>Plain Text: %s</p>",$plaintext);
//Triple DES 加密
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
$cipherText = mcrypt_generic($cipher,$plaintext);
//mcrypt_generic_deinit($cipher);
// 以十六进制字符显示加密后的字符
printf("<p>3DES encrypted:\n%s</p>",bin2hex($cipherText));
}
//Triple DES 解密
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
$decrypted_data = mdecrypt_generic($cipher,$cipherText);
mcrypt_generic_deinit($cipher);
printf("<p>3DES decrypted:\n%s</p>",$decrypted_data);
}?>显示结果:192 bit key: 313233343536373839313233343536373839313233343536Plain Text: test3DES encrypted: 2dcb38a59002856d3DES decrypted: -?卪大家帮忙看看是怎么回事,谢了。
mdecrypt_generic 函数没起做用$decrypted_data = mdecrypt_generic($cipher,$cipherText);$decrypted_data和$cipherText的值是一样的。不知道为什么