按块加密文件

时间:2016-10-28 22:49:50

标签: java encryption cryptography rsa public-key-encryption

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

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

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

有关如何使用RSA逐块加密整个大型文件的任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

但是...

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

您的代码不会这样做,因为:

  • 您立即返回第一个密文块:

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

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