java - 按 block 加密文件

标签 java encryption cryptography rsa public-key-encryption

我有一个大文件,正在尝试使用 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/

相关文章:

c# - RandomNumberGenerator 与 RNGCryptoServiceProvider

java - Android 创建自定义 key "@hotmail.com","@gmail.com"

java - NamedParameterJdbcTemplate 查询方法返回错误的整数值

java - 从选择框中选择一个项目,如何显示数据库中的内容?

java - 我可以在 Java 中进行 RSA 加密但在 PHP 中解密吗?

java - Android中的字符串加密

javascript - window.crypto 返回 352 位 key 而不是 256?

c - 荨麻双鱼 CBC

.net-core - 如何使用 id-ecc 创建自签名证书以用于 ECDSA 签名和验证?

java - 如何删除链表中特定索引处的对象?