このスレッドを見たことがありますが、そこで言及されている暗号化手法はうまく機能しています。しかし、すべての場合ではありません。
要件:
シンプルで、1 つの画像を取得して暗号化し、暗号化されたデータを保存します。後で、暗号化されたデータを取得して解読し、元の画像を再作成して表示します。
私がやった事
上記のスレッドから、AES 256 暗号化用の NSData の追加が見つかりました。私はそれを使用しようとしましたが、部分的に成功しました。これがコードです
//encryption
NSData *srcData = UIImageJPEGRepresentation(srcImage, 1.0);
NSLog(@"srcData length : %d",[srcData length]);
NSData *encryptedData = [srcData AES256EncryptWithKey:KEY];
NSLog(@"encrypted data length : %d",[encryptedData length]);
........
//later..
//decryption
decryptedImage = [UIImage imageWithData:[encryptedData AES256DecryptWithKey:KEY]];
imageView.image = decryptedImage;
何が起こっている
小さな画像、たとえば解像度 48*48 の画像の場合、このコードは正常に機能しています。しかし、より高い解像度 (たとえば 256 * 256) の画像でコードを実行すると、メソッドAES256EncryptWithKey
はエラーkCCBufferTooSmall
(-4301) で失敗します。
質問
- AES 256 は、暗号化されるペイロードのサイズ (バイト単位) に制限を課しますか?
- 最初の質問への答えがYESの場合、画像 (おそらく大きなもの) を暗号化するために、iPhone で使用する暗号化アルゴリズムの種類は何ですか?
- 最初の質問に対する答えがNOの場合、なぜこのエラーが発生するのでしょうか?