c - RSA使用openssl库加密500字节数据

标签 c encryption openssl rsa

我正在使用 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_SealInitEVP_OpenInit .

关于c - RSA使用openssl库加密500字节数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117280/

相关文章:

c - 如何自动去除尾随零?

openssl - 配置中的 req_extensions 和命令行上的 -extensions 有什么区别?

ssl - 如何在没有可导出私钥的情况下进行 ECDHE 握手

openssl - 使用 OpenSSL 创建 .pfx 文件

mysql - 在 Windows Server 2008 R2 中的 MySQL 上使用 TDE

python - 从 SHA-1 恢复损坏的 128 位 key

c - 编写一个在 Windows 上提取 RPM 文件内容的程序

将 fortran-iso-c-binding real 变量转换为 real

C 解释器(不是编译器)?

c# - JWT Web token 加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature