C RSA使用openssl库加密500字节的数据

C RSA使用openssl库加密500字节的数据,c,encryption,openssl,rsa,C,Encryption,Openssl,Rsa,我使用RSA算法进行共享密钥加密/解密。我使用开放式ssl库和c语言。RSA_size()返回256字节。密钥(加密数据)大小大于256字节,但小于500字节。用于加密的RSA密钥大小为1024。密钥对使用openssl库生成。 如果要加密的数据小于或等于245字节,加密工作正常(因为填充)。否则我必须破坏数据(不确定它是否正常,因为我正在尝试交换共享密钥)是否有其他方法增加RSA_大小。在调用RSA_public_encrypt之前,我的代码不会调用RAND_seed()(不确定要传递什么参数

我使用RSA算法进行共享密钥加密/解密。我使用开放式ssl库和c语言。RSA_size()返回256字节。密钥(加密数据)大小大于256字节,但小于500字节。用于加密的RSA密钥大小为1024。密钥对使用openssl库生成。
如果要加密的数据小于或等于245字节,加密工作正常(因为填充)。否则我必须破坏数据(不确定它是否正常,因为我正在尝试交换共享密钥)是否有其他方法增加RSA_大小。在调用RSA_public_encrypt之前,我的代码不会调用RAND_seed()(不确定要传递什么参数)。非常感谢您的帮助。

您可以将数据分块,也可以使用“seal”/“open”OpenSSL函数

基本上,他们所做的是生成一组随机密钥,使用公钥加密密钥,然后使用这些密钥加密您想要的任何内容。这样,您就不局限于特定的大小,而且解密也不会太慢(您只使用RSA对随机密钥进行解密,其余的则使用对称加密,因此速度要快得多)


我建议您查看和。

为什么需要大于256字节=2048位的密钥?