我正在使用 RSA 算法进行共享 key 加密/解密。我正在使用开放的 ssl 库和 c 语言。RSA_size() 返回 256 字节。 key (要加密的数据)大小大于 256 字节但小于 500 字节。用于加密的 RSA key 大小为 1024。 key 对是使用 openssl 库生成的。 如果要加密的数据小于或等于 245 字节,则加密工作正常(因为填充)。否则我必须破坏数据(不确定是否可以,因为我正在尝试交换共享 key )是否还有其他方法可以增加在调用 rsa_public_crypt 之前,RSA_size.my 代码不会调用 RAND_seed()(不确定要传递什么参数)。如有任何帮助,我们将不胜感激。
最佳答案
您可以将数据分成 block ,或使用“seal”/“open”OpenSSL 函数。
本质上,他们所做的就是生成一组随 secret 钥,使用公钥对 key 进行加密,然后使用这些 key 来加密您想要的任何内容。这样,您就不受特定大小的限制,并且解密也不会太慢(您只需使用 RSA 解密随 secret 钥,其余部分使用对称加密完成,因此速度要快得多)。
我建议你看看EVP_SealInit和 EVP_OpenInit .
关于c - RSA使用openssl库加密500字节数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117280/