gpt4 book ai didi

java - 可以使用 RSA 加密的数据量有多少限制?

转载 作者:太空狗 更新时间:2023-10-29 22:45:50 24 4
gpt4 key购买 nike

通常建议使用 RSA 加密对称 key ,然后使用对称 key 加密“有效负载”。

可以使用 RSA 加密的数据量的实际(或理论上)限制是多少(我使用的是 2048 位 RSA key 大小)。

特别是,我想知道用(不同的)RSA 公钥加密 RSA 公钥(256 字节)是否安全?我在 Java 中使用 Bouncy CaSTLe 加密库。

最佳答案

对于 n 位 RSA key ,直接加密(使用 PKCS#1“旧式”填充)适用于任意二进制消息,最多 floor(n/8) - 11 字节。换句话说,对于 1024 位 RSA key (128 字节),最多 117 字节。

使用 OAEP(PKCS#1“新式”填充),这会少一些。 OAEP 使用输出长度为 h 位的散列函数;这意味着 floor(n/8) - 2*ceil(h/8) - 2 的大小限制。对于使用 SHA-256 作为哈希函数的 1024 位 RSA key (h = 256),这意味着最多 62 字节的二进制消息。

用另一个 RSA key 加密一个 RSA key 没有问题(用 RSA 加密任何字节序列没有问题,无论这些字节代表什么),但是,当然,“外部”RSA key 必须更大:使用旧式填充,要加密 256 字节的消息,您将需要模数至少为 2136 位的 RSA key 。

Hybrid modes (您使用随机对称 key 加密数据并使用 RSA 加密该对称 key )仍然被推荐为一般情况,只是因为它们没有任何实际的大小限制,而且因为它们可以更容易地替换 RSA 部分另一种 key 交换算法(例如 Diffie-Hellman)。

关于java - 可以使用 RSA 加密的数据量有多少限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583379/

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