这个分辨率的PHP解密函数(看看)

时间:2012-10-09 11:06:42

标签: php ios encryption aes rijndael

经过很长一段时间寻找在PHP和iOS之间加密/解密数据的最佳方法,我现在要求你在PHP中使用函数。

我在Objective-C中使用此框架(https://gist.github.com/2507415),我的代码是:

NSString *string= @"Affe";
NSString *key = @"12345678901234567890123456789012";
NSLog(%@,[string AES256EnryptWithKey:key];

输出: UUfn34iyNlSK40VaehloaQ ==

我在PHP中尝试过这么多,但没有任何效果。我希望有人知道如何解密这个服务器端。

3 个答案:

答案 0 :(得分:2)

我对IOS知之甚少,但我最近在PHP和Java API之间实现了相同的逻辑。 我需要加密android设备和PHP后端之间的通信。

我写了一个小摘要,也许PHP部分可能会帮助你。

http://blog.cwill-dev.com/2012/10/09/encryption-between-javaandroid-and-php/

你应该看看路易斯已经提到的mcrypt library

答案 1 :(得分:0)

答案 2 :(得分:0)

这似乎是使用AES 128,在ECB模式下没有IV和PKCS-7兼容填充,请尝试this

function encrypt($str, $key)
{
    $block = mcrypt_get_block_size('rijndael-128', 'ecb');
    $pad = $block - (strlen($str) % $block);
    $str .= str_repeat(chr($pad), $pad);

    return base64_encode(mcrypt_encrypt('rijndael-128', $key, $str, 'ecb'));
}

function decrypt($str, $key)
{   
    $str = mcrypt_decrypt('rijndael-128', $key, base64_decode($str), 'ecb');

    $block = mcrypt_get_block_size('rijndael-128', 'ecb');
    $pad = ord($str[($len = strlen($str)) - 1]);
    return substr($str, 0, strlen($str) - $pad);
}

PS:我已经忘记了base64编码,现在已经修复了。