OpenSSL,从CString读取公共RSA密钥
OpenSSL, reading public RSA key from CString
我正在尝试从CString读取RSA公钥。在我从文件执行它之前,它很简单,我使用:
RSA *PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u);
但现在我不能使用这种方法。这就是为什么我想使用:
RSA *PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u);
但我不明白BIO *bp
论点以及如何将 CString 传递给它!
来自 bio(3) 文档
BIO 是一种 I/O 抽象,它隐藏了应用程序中的许多底层 I/O 详细信息。如果应用程序使用 BIO 进行其 I/O,它可以透明地处理 SSL 连接、未加密的网络连接和文件 I/O。
对于您的情况,我猜BIO_s_mem(3)是正确的类型
内存 BIO 是使用内存进行 I/O 的源/接收器 BIO。
和
BIO *BIO_new_mem_buf(void *buf, int len);
...
BIO_new_mem_buf() 使用 buf 处数据的 len 字节创建一个内存 BIO,如果 len 为 -1,则假定 buf 为空终止,其长度由 strlen 确定。BIO 设置为只读状态,因此无法写入。
所以对于 C 字符串,我会说这会导致
char rsa_key[1024];
...
BIO *bp = BIO_new_mem_buf(rsa_key, -1);
RSA *rsa = PEM_read_bio_RSA_PUBKEY(bp, ...);
OpenSSL 中的 BIO 类似于文件句柄。您可以使用一对它们安全地相互通信,就像使用两个套接字一样。
这里有一些示例代码的详细说明
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 在加密++中使用RSA加密对称AES密钥
- C++生成 RSA 密钥对并读取
- 一代 RSA-2048 密钥(公钥和私钥)
- 每次使用 c++ 生成相同的 RSA 密钥
- Windows TPM 虚拟智能卡 RSA 密钥存储
- 如何在C++中使用Cryptolib加载puttygen RSA密钥
- 如何生成不同寻常但数学上有效的RSA密钥
- 在 rjindael.cpp 中崩溃,使用 RSA 密钥时功能AESNI_Enc_Block
- OpenSSL:我使用存储外部文件的RSA密钥加密和解密文件,但有时我的程序会崩溃
- 通过 tcp 发送 rsa 密钥
- 如何在没有 p、q 等的情况下加载 RSA 密钥对
- 如何在没有Openssl或其他库的情况下加载RSA密钥对
- 加密++ rsa密钥进入缓冲区
- 介绍如何打印OpenSSL RSA密钥的内容
- 以"simple"形式获取 RSA 密钥
- OpenSSL,从CString读取公共RSA密钥
- 在其他计算机上导入RSA密钥的问题
- 从RSA密钥对变量中分离公钥和私钥
- 在.net中使用OpenSSL RSA密钥