我有一个大文件,正在尝试使用 RSA 进行加密。是的,我知道在这种情况下通常使用混合加密,但我想使用标准公钥加密来看看效率上的差异。
为了加密这么大的文件,我知道我必须逐 block 加密。收到错误消息,指出我的字节数组太大,无法使用 RSA-2048 加密,我将字节数组减少到 245 字节。 246 字节的字节数组工作正常,但它也只适用于 246 字节,这是我的问题。我需要使用 RSA-2048 加密整个文件。
在研究 RSA-2048 密码学以更好地理解和逐 block 加密之后,我仍然对使用 RSA-2048 实现逐 block 加密感到困惑。这是我第一次用任何语言实现密码学。下面是我使用 RSA 公钥加密大文件的代码。
任何有关如何使用 RSA 逐 block 加密整个大文件的建议,我们将不胜感激。
最佳答案
首先,无论您怎么说,您都不应该使用 RSA 作为分组密码。如果您在生产代码中这样做并且有人发现了,您很可能会被解雇。
但是...
- 您应该从
FileInputStream
读取最多约 246 个字节。 - 使用 RSA 加密结果。
- 将加密 block 写入
FileOutputStream
。
您的代码不会执行此操作,因为:
您立即返回第一 block 密文:
inputfile= cipher.doFinal(block); 返回输入文件;
- 您不对结果执行任何操作。
关于java - 按 block 加密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314225/