【问题标题】:Display encrypted image on UIIImageView in objective c在目标 c 中的 UIIImageView 上显示加密图像
【发布时间】:2017-02-15 14:18:35
【问题描述】:

我使用 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 加密算法。我该如何解决这个问题?有任何想法吗?谢谢。

【问题讨论】:

  • 您无法显示它,因为您对其进行了加密。你想用加密来完成什么?
  • 解密 encryptedData 使用以下方法.. + (NSData*)decryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv
  • @zaph 我正在尝试获取加密图像。我的意思是我们只能看到噪音或其他东西,但看不到原始图像的图像。

标签: ios objective-c encryption uiimageview aes


【解决方案1】:

这个问题中的问题是你加密了整个图像文件而不是单独的位图。该文件包含显示图像所需的元信息。 IE。该文件的开头有a signature,以将其标记为PNG。加密文件,您会破坏该签名。

您必须单独加密位图。

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

【讨论】:

    【解决方案2】:

    lunapic.com 使用的是placeholder image 您可以将此类图像作为加密图像的占位符,加密图像将没有任何图像属性以便UIImageView读取它,当用户解密图像时,您可以将解密后的图像放入其中占位符,就是这样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多