介绍如何打印OpenSSL RSA密钥的内容
How to print the content of an OpenSSL RSA key
我想打印使用OpenSSL创建并通过指针访问的RSA密钥的内容
RSA * rsa;
现在,我已经尝试使用RSA_print和BIO_read函数如下:
BIO * keybio ;
RSA_print(keybio, rsa, 0);
char buffer [1024];
std::string res = "";
while (BIO_read (keybio, buffer, 1023) > 0)
{
std::cout << buffer;
}
,但是在第一次执行BIO_read(第六行)时,我得到了分段错误。有人能发现这个错误吗?
我认为你在写未分配的内存。我不认为RSA_print()
为BIO
分配内存,所以你传递了一个未初始化的指针给它。
编辑:正如@jww在评论中指出的,BIO
对象应该用一组专用选项实例化。我相应地编辑了答案。我还更改了传递给1024
的缓冲区大小。
分配空间:
BIO * keybio = BIO_new(BIO_s_mem());
RSA_print(keybio, rsa, 0);
char buffer [1024];
std::string res = "";
while (BIO_read (keybio, buffer, 1024) > 0)
{
std::cout << buffer;
}
BIO_free(keybio); //appropriate free "method"
BIO_s_mem()
创建一个内存BIO
方法函数。BIO_new()
使用提供的方法创建并初始化对象本身。
还请注意,这段代码是c
样式的。有一种将纯指针包装成c++
智能指针的好方法,如下所示:如何在c++中正确地将RSA*打印为字符串?
相关文章:
- 使用 char 数组公钥的 OpenSSL 进行 RSA 加密
- OpenSSL RSA 解密随机失败 C/C++
- OpenSSL RSA 库抛出异常
- 致命错误:openssl/rsa.h:没有这样的文件或目录
- 使用 openssl libcrypto 解密具有 RSA 私钥的数据时RSA_NO_PADDING的使用
- 使用C 中的OpenSSL格式为RSA键
- 获取errro openssl/rsa.h:没有这样的文件或目录
- 如何使用OpenSSL API从其PEM格式字符串中读取RSA公钥
- 通过openssl/c/c++以字节形式读取RSA公钥
- 如何从包含 OpenSSL 中的公钥的字符数组中获取 RSA* 对象
- OpenSSL:我使用存储外部文件的RSA密钥加密和解密文件,但有时我的程序会崩溃
- OpenSSL:RSA加密/解密,密钥生成和密钥持久性
- 通过OpenSSL(c++)以XML(w3c)格式保存RSA公钥和私钥
- 如何在没有Openssl或其他库的情况下加载RSA密钥对
- OpenSSL, RSA and Winsock and C++
- OpenSSL C++RSA符号与命令行符号不同
- 使用openssl验证c++中的RSA签名
- 用C/ c++生成的RSA OpenSSL密钥可以用PHP解密吗?
- 介绍如何打印OpenSSL RSA密钥的内容
- openssl支持RSASSA-PPS、RSA EMSA-PSS编码