gpt4 book ai didi

encryption - 如何使用 key 大小和明文长度计算 RSA 密文的大小?

转载 作者:行者123 更新时间:2023-12-04 02:02:59 31 4
gpt4 key购买 nike

我有一些我想使用 RSA_PKCS_V21(使用 PolarSSL 库)加密的明文。问题是我需要在执行算法之前知道密文的大小(用于动态内存分配)。
我知道 RSA key 大小和明文长度。
我也想知道输入明文长度的限制。
任何的想法?

最佳答案

只需检查 RSA PKCS#1 v2.1 standard, chapter 7.2 :

RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M)

Input:

  • (n, e) recipient's RSA public key (k denotes the length in octets of the modulus n)
  • M message to be encrypted, an octet string of length mLen, where mLen <= k - 11


所以输入取决于 key 大小。 k 是 key 大小,但以八位字节表示。因此,对于 1024 位 key ,您有 1024/8 - 11 = 117 个字节作为最大纯文本。

请注意,以上是带有 PKCS#1 v1.5 填充的 RSA 的最大大小。对于较新的 OAEP 填充,可以在 chapter 7.1 中找到以下内容:

RSAES-OAEP-ENCRYPT ((n, e), M, L)

...

Input:

  • (n, e) recipient's RSA public key (k denotes the length in octets of the RSA modulus n)
  • M message to be encrypted, an octet string of length mLen, where mLen <= k - 2hLen - 2
  • L optional label to be associated with the message; the default value for L, if L is not provided, is the empty string


其中 hLen 是用于掩码生成函数的哈希函数的输出大小。如果使用默认的 SHA-1 哈希函数,则消息的最大大小为 k - 42(因为 SHA-1 的输出大小为 20 字节,并且 2 * 20 + 2 = 42)。

通常加密随机生成的 key 而不是消息。然后使用该 key 对消息进行加密。这允许几乎无限长的消息,并且对称加密(例如 CBC 模式下的 AES)比非对称加密快得多。这种组合称为 hybrid encryption

带有任何填充的 RSA 加密或签名生成的输出大小与以字节为单位的模数大小相同(当然向上舍入),因此对于 1024 位 key ,您会期望 1024/8 = 128 个八位字节/字节。

请注意,计算出的大小的输出数组可能包含设置为零的前导字节;这应该被认为是正常的。

关于encryption - 如何使用 key 大小和明文长度计算 RSA 密文的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505547/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com