在目标c中的UIIImageView上显示加密图像

时间:2017-02-15 14:18:36

标签: ios objective-c encryption uiimageview aes

我使用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加密算法需要它。我怎么能解决这个问题?有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

此问题中的问题是您只加密整个图像文件而不是位图。该文件包含显示图像所需的元信息。 I. e。该文件开头有a signature标记为PNG。加密文件,即可销毁该签名。

您必须仅加密位图。

这导致了下一个问题,即如何从图像中获取纯位图数据。幸运的是,这个问题在堆栈溢出时得到了多次回答,i。即here

答案 1 :(得分:0)

lunapic.com正在使用placeholder image 你可以把这样的图像作为加密图像的占位符,加密图像不会有任何图像属性,以便让UIImageView读取它,当用户解密图像时,你就可以放置解密图像在那个占位符中,就是这样