CCCrypt(Objective-C) で暗号化したデータを Crypt::OpenSSL::AES(perl) で復号化する
iPhone/iPad/iPod で暗号化(AES256 を使用)したデータをサーバ側で復号化するのに半日ハマったのでメモ。
まず、ObjC 側。CCCrypt の解説は方々に存在しているので割愛。IV に NULL を指定しているので 0x00 が 16 Byte という事になる。
CCCrypt(
kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
key, keySize,
NULL,
data, dataSize,
buffer, bufferSize,
&bufferBytes
);
次に、Perl 側。
Crypt::CBC->new( -key => $key, -literal_key => 1, -cipher => 'Crypt::OpenSSL::AES', -header => 'none', -iv => pack('C*', map {0x00} (1..16)), )->decrypt($data);
ポイントは下記の通り。