将图像(png)转换为字符串然后加密图像

时间:2012-08-22 03:33:24

标签: java image encryption

我想加密图像然后解密它。是否有任何好的参考或教程或示例显示如何将图像转换为字符串然后加密字符串?或者还有其他加密图像的方法?因为我是这个的新手,而且我去搜索,但没有任何简单的例子供我理解和遵循。

如果我没错,我必须使用FileInputstream和ImageIO,但我不知道它是如何完全工作的。有人可以指导我吗?感谢

2 个答案:

答案 0 :(得分:6)

图像是二进制文件,因此我认为转换为字符串以进行加密没有多大意义。这会增加相当多的开销和复杂性,没有额外的好处。

您应该直接加密二进制文件。

请参阅:

答案 1 :(得分:1)

如果您的问题是“如何在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更像字节数组 -