【发布时间】:2012-10-26 06:33:36
【问题描述】:
我见过this 线程,那里提到的加密技术运行良好。但并非在所有情况下。
要求:
很简单,取一张图像,加密,然后存储加密数据。稍后,获取加密数据,解密,重新创建原始图像并显示。
我做了什么
从上面提到的线程中,我找到了NSData additions for AES 256 encryption。我尝试使用它,但取得了部分成功。这是代码
//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,那么为什么会出现这个错误?
【问题讨论】:
标签: iphone encryption uiimage aes nsdata