RSA使用openssl库加密500字节数据
我正在使用 RSA 算法进行共享密钥加密/解密。我正在使用开放的 ssl 库和 c 语言。RSA_size() 返回 256 字节。密钥(要加密的数据)大小大于 256 字节但小于 500 字节。使用的 RSA 密钥大小加密为 1024。密钥对是使用 openssl 库生成的。 如果要加密的数据小于或等于 245 字节,则加密工作正常(因为填充)。否则我必须破坏数据(不确定是否可以,因为我正在尝试交换共享密钥)是否还有其他方法可以增加在调用 rsa_public_crypt 之前,RSA_size.my 代码不会调用 RAND_seed()(不确定要传递什么参数)。任何帮助表示赞赏。
I am using RSA algorithm for shared key encryption/decryption.I am using open ssl libraries and c language.RSA_size() returns 256bytes.the key(data to enrypt) size is more than 256bytes but less than 500 bytes.The RSA keysize used for encryption is 1024.keypair is generated using openssl library.
If data to encrypt is less than or equals to 245 bytes the encryption works fine(because of padding).Otherwise i have to break the data(not sure it is ok as iam trying to exchange shared key)Is there any other way to increase RSA_size.my code doesn't call RAND_seed()(not sure what argment to pass) before calling rsa_public_encrypt. Any help is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将数据分成块,或者使用“seal”/“open”OpenSSL 函数。
本质上,他们所做的就是生成一组随机密钥,使用公钥对密钥进行加密,然后使用这些密钥来加密您想要的任何内容。这样,您就不受特定大小的限制,并且解密也不会太慢(您只使用 RSA 解密随机密钥,其余部分使用对称加密完成,因此速度要快得多)。
我建议您查看 EVP_SealInit 和 EVP_OpenInit。
You can either break your data into chunks, or use the "seal"/"open" OpenSSL functions.
Essentially what they do is generate a random set of keys, encrypt the keys using the public key and then use those keys to encrypt whatever you want. That way you're not limited to specific sizes and decryption is not too slow (you only decrypt the random keys using RSA, the rest is done using symmetric encryption so it's a lot faster).
I suggest you have a look at EVP_SealInit and EVP_OpenInit.