【发布时间】:2012-08-22 15:04:53
【问题描述】:
我想加密图像然后解密它。是否有任何好的参考或教程或示例显示如何将图像转换为字符串然后加密字符串?或者还有其他加密图像的方法?因为我是新手,所以我也去搜索过,但没有任何简单的例子让我理解和遵循。
如果我没记错的话,我必须使用 FileInputstream 和 ImageIO,但我不知道它是如何完全工作的。任何人都可以指导我吗?谢谢
【问题讨论】:
标签: java image encryption
我想加密图像然后解密它。是否有任何好的参考或教程或示例显示如何将图像转换为字符串然后加密字符串?或者还有其他加密图像的方法?因为我是新手,所以我也去搜索过,但没有任何简单的例子让我理解和遵循。
如果我没记错的话,我必须使用 FileInputstream 和 ImageIO,但我不知道它是如何完全工作的。任何人都可以指导我吗?谢谢
【问题讨论】:
标签: java image encryption
图像是二进制文件,因此我认为将其转换为字符串以进行加密没有多大意义。这会增加相当多的开销和复杂性,而不会带来额外的好处。
您可能应该直接加密二进制文件。
见:
【讨论】:
如果您的问题是“我如何在 Java 中执行加密”,请查看我在 Java cryptography 上写的一些内容,尤其是在 symmetric key encryption 上的部分。本质上,您创建了一些密钥,它可以只是用 SecureRandom 生成的一串随机字节:
byte[] key = new byte[16];
(new SecureRandom()).nextBytes(key);
然后你构造一个 Cipher 对象并用密钥初始化它,然后将你需要加密的数据传递给它:
public byte[] encryptData(byte[] key, byte[] data) {
Cipher c = Cipher.getInstance("AES/CTR/PKCS5PADDING");
byte[] initialCounter = new byte[16];
c.init(Cipher.ENCRYPT_MODE,
new SecretKeySpec(key, "AES"),
new IvParameterSpec(initialCounter));
byte[] encryptedData = c.doFinal(plaintextData);
return encryptedData;
}
对图像进行加密并没有什么特别之处——归根结底,它只是一堆字节,就像其他任何东西一样。
密码学的主要问题是您需要了解各种微妙之处才能使其安全。
这里的链接也可以帮助你很多:
注意,您不需要将其转换为更像字节数组的String-
【讨论】: