我使用AES(加密算法)加密图像(png)并获得加密的NSData。我使用FBEncryptor框架。现在我试图在UIImageView上显示它,但它不起作用。这是我的代码:
@interface ImageEncryptingViewController ()
@property (strong, nonatomic) IBOutlet UIImageView *encoptdImg;
@end
@implementation ImageEncryptingViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *imageData = UIImagePNGRepresentation(img);
NSData* encryptedData = [FBEncryptorAES encryptData:imageData key:imageData iv:imageData];
UIImage *image = [[UIImage alloc]initWithData:encryptedData];
NSLog(@"%@", encryptedData);
_encoptdImg.image = image;
}
最后我想获得加密图像,我们可以看到噪音或其他东西,但不是原始图像。例如,website这样做。我在ios上使用AES加密算法需要它。我怎么能解决这个问题?有任何想法吗?感谢。
答案 0 :(得分:1)
此问题中的问题是您只加密整个图像文件而不是位图。该文件包含显示图像所需的元信息。 I. e。该文件开头有a signature标记为PNG。加密文件,即可销毁该签名。
您必须仅加密位图。
这导致了下一个问题,即如何从图像中获取纯位图数据。幸运的是,这个问题在堆栈溢出时得到了多次回答,i。即here
答案 1 :(得分:0)
lunapic.com正在使用placeholder image
你可以把这样的图像作为加密图像的占位符,加密图像不会有任何图像属性,以便让UIImageView
读取它,当用户解密图像时,你就可以放置解密图像在那个占位符中,就是这样