按块加密文件

Encrypt file by blocks

我有一个大文件,正在尝试使用 RSA 加密。是的,我知道在这种情况下通常使用混合加密,但我想使用标准 public 密钥加密来查看效率差异。

为了加密这么大的文件,我明白我必须逐块加密。收到后,一个错误指出我的字节数组太大而无法使用 RSA-2048 加密,我将字节数组减少到 245 字节。 246 字节的字节数组工作正常,但它也只适用于 246 字节,这是我的问题。我需要用 RSA-2048 加密整个文件。

在研究了 RSA-2048 密码学以更好地理解和逐块加密之后,我仍然对使用 RSA-2048 实现逐块加密感到困惑。这是我第一次用任何语言实现密码学。下面是我使用 RSA public 密钥加密大文件的代码。

如有任何关于如何使用 RSA 逐块加密整个大文件的建议,我们将不胜感激。

首先,不管你怎么说,你永远不应该使用 RSA 作为分组密码。如果您在生产代码中这样做并且有人发现了,您很可能会被解雇。

但是...

  • 您应该从 FileInputStream 中读取最多 ~246 个字节。
  • 使用 RSA 加密结果。
  • 将加密块写入FileOutputStream

您的代码没有执行此操作,因为:

  • 你马上return第一块密文:

    inputfile= cipher.doFinal(block); return inputfile;

  • 你不对结果做任何事情。