使用带有密码的AES算法解密图像

时间:2011-07-19 05:30:14

标签: iphone android aes encryption

大家好吧,任何人都可以告诉我如何用密码使用AES算法解密图像。图像已在iphone中用一些密码加密。

提前致谢

编辑#1    问题是用户将从iPhone应用程序中选择一些图像并使用用户输入的密码对其进行加密并将其发布到服务器。现在我们需要做的是从服务器下载图像并使用相同的密码解密并将图像显示给用户。在iphone中,他们给出了长度为4的密码,如'test'。希望你能更好地理解我想要做的事情。

在iPhone中,他们有followed this link

2 个答案:

答案 0 :(得分:1)

好吧,首先你需要知道从密码派生的密钥。他们使用过PBKDF#2吗?多少回合? AES没有“密码”,它有密钥。

其次,哪种模式是加密的图像?欧洲央行? CBC? CTR? GCM?

如果您拥有byte[]数据,SecretKey密钥和byte[] IV,并使用了CBC模式,则可以使用以下内容进行解密:

cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv)); 
ciphertext = cipher.doFinal(imageByte);

由于这里有大量的未知因素,我无法提供确切的解决方案。

答案 1 :(得分:1)

要解密图像,您需要了解两件事:

  1. 密钥生成程序详细信息。通常使用基于提供的密码的hash calculation来完成。有时可以使用所谓的password salting来强化密码。如果是这样,你需要知道密码盐。基本上是:

    键=散列(密码+盐)

  2. 即使您知道密钥,您也必须知道ciphering mode(那些神秘的ECB / CBC等)。基本上,操作模式意味着加密块如何相互链接。

  3. 没有这两个参数,解密就没用了 - 所以“使用Source Luke!”