2016-03-22 7 views
2

私はhereのaesEncryptWithStaticIV()を使ってデータを暗号化しています。iOSから受け取ったデータの復号化に大きなデータが必要です - PHP

テキストデータ "test"の場合、関数は私に暗号化結果を与えます065TnFFNwQFRjPZk6l8luw== そしてPHPはそれを成功裏に解読します。

しかし、 '実際の' データ

で例えば: "progression|*|D4E1B270-06DD-4A|*|25|*|342|*|159|*|10|*|1457454939636.0"

PHPはここで、正しくデータを復号化する私に "m/^(_2<=Q9KBu#~<,s+z'sS)\\nrMc-o|PCxJNo/"

を与えませんが、PHPの復号化機能であります:

function decrypt($data) { 
    $code = base64_decode (urldecode ($data)); 
    $iv = $this->iv; 
    $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv); 
    mcrypt_generic_init($td, $this->key, $iv); 
    $decrypted = mdecrypt_generic($td, $code); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 
    return trim(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $decrypted)); 
} 

と彼女データを暗号化するための手順(http投稿で送信):

let dump = try! data.stringByAddingPercentEncodingForRFC3986()!aesEncrypt()

それが唯一のショート/簡単なデータを扱うだなぜ私は理解していませんか?

+2

は**静的IVとCBCモードを使用しないでください。それは決定論的であり、したがって意味的に安全ではありません。あなたは少なくともランダムなIVを使うべきです。それは秘密である必要はないので、あなたは暗号文と共にそれを送ることができます。しかし、[パディング・オラクル攻撃](http://crypto.stackexchange.com/q/18185/13022)のような攻撃は不可能になるように、暗号文を認証する方が良いです。これは、GCMやEAXなどの認証モードや[暗号化MAC](http://crypto.stackexchange.com/q/202/13022)スキームで行うことができます。 –

+0

私はここに来て、何を@ArtjomBと言いました。前記。 –

+0

アドバイスいただきありがとうございます、私は自分のコードを変更します。 – Khorwin

答えて

0

単にPHPから)(urldecodeを削除し、理由を理解していないが、**それは、データをcorromptが、視覚的にそこには違い...

関連する問題