3

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

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

4

2 回答 2

6

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

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

看:

于 2012-08-22T03:40:06.747 回答
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更像字节数组-

于 2012-08-22T03:45:40.587 回答