上PHP加密困难
问题描述:
我必须传递值并将其加密,以如下规格的Rijndael 256:上PHP加密困难
“的256位密钥长度,256位的块长度,32字节的块,ECB模式,有 ASCII编码(加密数据预期为字符串 ,每个字符已转换为2个字节的HEX值)“
但是我必须缺少一些东西。这是用于Web服务的验证目的,但由于解密失败,我一直被拒绝。
这是我有:
$key = '1324mykey';
$string = 'Ron Swanson';
// 1. Encrypt the string with the key using Rijndael 256 in ECB mode
$td = mcrypt_module_open('rijndael-256', '','ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_string = mcrypt_generic($td, $string);
// 2. Base64 encode my string
$encrypted_string = base64_encode($encrypted_string);
// 3. Convert each character of encrypted_string to it's 2-byte HEX value
$hex='';
for ($i=0; $i < strlen($encrypted_string); $i++)
{
$hex .= dechex(ord($encrypted_string[$i]));
}
// Now $encrypted_string should match up with the recipe, but it isn't.
$encrypted_string = $hex;
我希望有一些基本的东西在我的思念在我的我的方法的步骤1的加密要求。
答
如果您的要求是256位密钥,您的$key
变量是不是32字节? (换句话说,32个字符长)?
答
这已经解决了...(un?)幸运的是,我只是给了一个错误的参数。
对不起......实际的密钥是32个字节,但是我没有在这里发布,因为这是不必要的谨慎。 – 2012-01-12 14:29:43