-1

PHPとiOSの間でデータを暗号化/復号化するための最良の方法を長い間探してきた後、私は今、PHPの関数を求めています。

私はObjective-Cでこのフレームワーク(https://gist.github.com/2507415)を使用しており、私のコードは次のとおりです。

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

出力:UUfn34iyNlSK40VaehloaQ ==

私はPHPで多くのことを試しましたが、何も機能しません。誰かがこのサーバー側を復号化する方法を知っていることを願っています。

4

3 に答える 3

2

私はIOSについてあまり知りませんが、最近PHPとJavaAPIの間に同じロジックを実装しました。AndroidデバイスとPHPバックエンド間の通信を暗号化する必要がありました。

私は小さな要約を書きました、多分PHPの部分はあなたを助けるかもしれません。

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

Louisがすでに述べたように、 mcryptライブラリを確認する必要があります。

于 2012-10-09T11:20:19.310 に答える
0

PHPはAES256、 http: //www.php.net/manual/en/function.hash-algos.phpをサポートしていないようです。

Rijndael-256を使用した実装を見つけましたが、正しく機能するかどうかはわかりません。

http://kix.in/2008/07/22/aes-256-using-php-mcrypt/

http://snipperize.todayclose.com/snippet/php/Encrypt-and-Decrypt-AES-256--17234/

于 2012-10-09T11:14:37.713 に答える
0

これはAES128を使用しているようで、ECBモードのIVとPKCS-7互換のパディングはありません。これを試しください。

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エンコーディングを忘れていましたが、修正されました。

于 2012-10-09T11:30:57.630 に答える