【问题标题】:RSA maximum message length with specific padding带有特定填充的 RSA 最大消息长度
【发布时间】:2017-02-02 20:50:54
【问题描述】:

我正在尝试在我的 Java 应用程序中实现一些加密。 加密应该如下工作:

  1. 生成随机 n 位 AES 密钥
  2. 使用 RSA 公钥加密 AES 密钥
  3. 向服务器发送加密的 AES 密钥
  4. 使用 AES 密钥加密数据 + 发送到服务器

我无法决定使用哪种填充算法。我读到OAEPWithSHA-1AndMGF1Padding 是一个不错的选择,但是我可以用它加密的最大消息长度是多少?

我需要知道我的 AES 密钥可以使用带有OAEPWithSHA-1AndMGF1Padding 的 RSA 加密的确切最大字节数。

RSA 密钥的长度也会有所不同。我可能会选择 2048 位。

TL;DR:我可以使用带有OAEPWithSHA-1AndMGF1Padding 的 2048 位 RSA 密钥加密多少字节?

【问题讨论】:

    标签: java encryption cryptography aes rsa


    【解决方案1】:

    您所描述的内容称为Hybrid Encryption,它是一种常见的方法,可以结合 RSA 的两个密钥的优点来获得对称密钥加密系统的速度。

    至于具体情况:

    2048 位 RSA 密钥允许 256 个字节,其中 OAEP 填充占用 42 个字节,剩下大约 214 个字节用于加密数据。 AES-256 密钥的长度为 256 位(32 字节),因此有足够的空间存放它。

    【讨论】:

    • AES 还支持 128 位和 192 位的密钥大小。
    • 那么带有 SHA1 和 MGF1 的 OAEP 需要 42 个字节?如果我将 OAEP 与 SHA256 和 MGF1 一起使用,那不是会使用更多字节吗?
    • 是否有任何文件可以检查这些算法使用的字节数?或者也许是一个公式?
    • OAEP 填充大小取决于 OAEP 参数之上的密钥大小和消息大小。填充量会自动扩展以使消息和填充适合密钥大小。 Ebbe 显示的是 最小 的填充量。
    • @kwantuM 看看here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多