首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用OpenSSL提取公钥?

回答:

  1. 什么是OpenSSL?

OpenSSL是一个开源的加密和安全套接字层(SSL)库,提供了丰富的加密和解密功能以及SSL/TLS协议的实现。

  1. 如何使用OpenSSL提取公钥?

要使用OpenSSL提取公钥,可以按照以下步骤进行:

(1) 导入OpenSSL库:在代码中添加以下行:

代码语言:c++
复制
#include <openssl/bn.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/pem.h>

(2) 定义要提取公钥的字符串:在代码中添加以下行:

代码语言:c++
复制
const char *public_key_data = "-----BEGIN PUBLIC KEY-----\
MIGfMA0GCSqGSIb3DQEJARYQAlice@example.com+AEEwDQYJKoZIhvc...
-----END PUBLIC KEY-----\
";

(3) 提取公钥:在代码中添加以下行:

代码语言:c++
复制
EVP_PKEY *public_key = EVP_PKEY_new_raw_public_key(EVP_PKEY_RSA, NULL);
EVP_PKEY_assign_RSA(public_key, EVP_PKEY_get0_RSA(public_key_data));
char *public_key_bn = BN_bn2hex(EVP_PKEY_get0_RSA(public_key_data));

(4) 打印公钥:在代码中添加以下行:

代码语言:c++
复制
printf("Public key:
");
for (int i = 0; i < EVP_PKEY_size(public_key); i++) {
    printf("%02x", EVP_PKEY_get0_RSA(public_key_data)[i]);
}
printf("
");

这样就可以成功提取公钥了。如果需要使用公钥进行加密或验证,可以使用EVP_PKEY_assign_RSA函数将公钥与私钥关联起来。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

20.6 OpenSSL 套接字分发RSA

通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的和私钥都必须存储在本地文本中且与私钥是固定的无法做到更好的保护效果,而一旦与私钥泄密则整个传输流程都将会变得不安全...20.6.1 RSA算法封装要实现这个效果我们就需要封装一套可以在内存中生成密钥对的函数,当需要传输数据时动态的生成密钥对,并将部分通过套接字传输给对应的客户端,当客户端收到后则可以使用进行通信...#include #include #include #include #include <openssl.../如果是private则使用私钥 if (strcmp(type, "public") == 0) { // 读入文件 if (!...,首先我们来看客户端的实现方式,当客户端成功连接到了服务端则首先接收服务端传来的,当收到服务器传来的后通过使用rsa_encrypt函数并用对待发送字符串进行加密,加密后调用send将加密数据发送给服务端

19431

强制升级openssl导致无法使用SSH(生成ssh)

>= 1.0.1e and associated developement headers required 很明显,系统的openssl版本过于古老, 而安装freeswitch的编译和运行需要openssl...坑一:openssl编译 一般c项目的configure过程中会通过配置–prefix=xxx来设定被编译lib的安装目录,我一般习惯放到/usr/local/xxx,所以openssl也不例外,顺利安装到.../usr/local/openssl-1.0.1h目录下,但freeswitch的configure还是一直提示openssl版本太低: configure: error: OpenSSL >= 1.0.1e...-fPIC来编译动态库,freeswitch通过动态链接的形式依赖openssl相关的库,于是加上shared和-fPIC后重新configure和make openssl: ....总结 纠结了这么久,最后的效果就两点: 升级openssl,覆盖默认的老版本openssl,这里选择的是覆盖,即安装到/usr目录下,因为我没找到可以让freeswitch运行时手动指定openssl相关

2.5K20
  • 20.6 OpenSSL 套接字分发RSA

    通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的和私钥都必须存储在本地文本中且与私钥是固定的无法做到更好的保护效果,而一旦与私钥泄密则整个传输流程都将会变得不安全...20.6.1 RSA算法封装 要实现这个效果我们就需要封装一套可以在内存中生成密钥对的函数,当需要传输数据时动态的生成密钥对,并将部分通过套接字传输给对应的客户端,当客户端收到后则可以使用进行通信...openssl/pem.h> #include #include extern "C" { #include <openssl/applink.c.../如果是private则使用私钥 if (strcmp(type, "public") == 0) { // 读入文件 if (!...,首先我们来看客户端的实现方式,当客户端成功连接到了服务端则首先接收服务端传来的,当收到服务器传来的后通过使用rsa_encrypt函数并用对待发送字符串进行加密,加密后调用send将加密数据发送给服务端

    18650

    如何用私钥加密

    2、用来给数据加密,用加密的数据只能使用私钥解密。 3、私钥,如上,用来解密加密的数据。 4、摘要,对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得。...因此拿自己持有的对签名进行解密,得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。...使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用加密数据就必须用私钥解密,如果用私钥加密也必须用解密,否则解密将不会成功。...非对称密钥加密,又称密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。...2、A接着使用B的(PUB_B)对信息内容和签名信息进行加密。

    2.1K00

    【计算机网络】网络安全 : 分配 ( 使用者 | 分配 | CA 证书格式 | CA 证书吊销 )

    文章目录 一、使用者 二、分配 三、CA 证书格式 四、CA 证书吊销 一、使用者 ---- 密码体质中 , 用户的也不能随意的公布 , 无法防止伪造 , 欺骗 , 接收者无法确认使用者的身份...; 也不是所有人都可以持有的 , 需要经过认证后 , 才可以持有 ; 二、分配 ---- 分配 : ① 认证中心 CA : 分配需要通过 认证中心 ( CA , Certification..., 不可伪造 ; ④ CA 证书作用 : 用于当做身份证明 , 解决信任问题 ; 验证 : 任何人 都可以获取 认证中心 , 该 CA 作用是 验证某是否是某实体合法拥有的 ; 三、CA...: 认证中心分配 签名算法 : CA 证书签名算法 发行者 : 有效期 : 起始时间 ~ 终止时间 主体名 : 谁持有该证书 : , 使用方法 发行者 ID : 标识发行者 主体 ID :...证书持有者 ID 扩展域 : 扩展信息 认证机构签名 : 使用 CA 私钥对该 证书 进行签名 , 可以使用验证 四、CA 证书吊销 CA 证书吊销 : 证书过期 对应的私钥泄漏 CA 证书签名的私钥泄漏

    60500

    如何在SecureCRT上使用登陆Linux服务器?

    我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用登陆。说是安全,好吧。那我们整一下。那到底使用登陆服务器有什么好处呢?...选择“”,然后点击右边的属性按钮,在对话框中。 image.png 使用全局设置:表示所有连接都使用连接服务器。 使用会话设置:可以分别为每个连接指定不同的。...重点补充,如果还有其他人也想用自己的登陆服务器,该如何操作呢? 正常操作应该为该用户在服务器上创建一个账号,重新执行本次(Linux服务器端配置,第2点)操作。...最后,使用SecureCRT登陆linux服务器。 这里要注意,即使你使用登陆服务器,当你连接的时候,还是要你输入用户名。为何呢?不是说验证么?...如果你设置了口令,连接时比如输入。为了安全,这个口令是必须要有的。在SecureCRT中,口令被翻译为:通行短语。呵呵。 补充一下,在linux系统上,如何创建和私钥呢?

    2.5K20

    openssl生成私钥,加密接口数据!这俩指令

    生成要用刚才生成的私钥生成。可以在网络上进行传输而不担心其泄露。好比一把钥匙一把锁。单独把钥匙拿走或者把锁拿走,找不到另一半,加密的字符串,是不能被破解的。...文件内容就是。 windows OpenSSL也提供了windows下的安装包。同样需要在cmd命令行执行下面的指令。生成的步骤和方法与Linux下相同。我们不过多赘述。...实操 光说不练假把式,我们用上述指令生成一对和秘。看看他们都长什么样。为了普遍用途起见,我们使用1024位加密长度。 下面生成的这个是私钥。...GJLctZAkEAu0HGDVmwc8ZZPXi5f6SfKteOS6dBm7jc6ZEUqTtc 6XckXhra2gsrMwpbswsSQ/Eh4u3TfeXW9AJXsmhAaXQsuw== -----END RSA PRIVATE KEY----- 下面这行是用私钥生成的文件内容...写在最后 在应用程序中接口数据不想暴露给外部访问,但是又不想做单向加密,那么RSA的私钥就派上大用场了,不对称加密就是这么好使。 Happy coding :)

    2.3K10

    对称、非对称加密是如何工作的?

    发送方和接收方都必须使用相同的密钥。使用相同的密钥虽然也可以,但是其中存在一个问题是我们如何在共享密钥的同时保证密钥不被窃听者拦截?...“非对称加密技术比对称加密技术稍微复杂一点,二者之间的主要区别是:对称加密使用共享密钥来解密数据,非对称加密使用密钥对来解密数据”。 密钥对由两部分组成:和私钥。...“每个用户都有像自己用户名一样的,所有人都能看到,但无权访问其中的数据。私钥就像你的邮箱密码一样,帮助你将数据发送给另一个人”。...要想发送数据,首先,我们要有私钥(即密码)以及接收者的(即用户名),这使加密技术变得更加复杂。 然后,接收者使用其私钥(即密码)和发送者的(即用户名)来对数据进行解密。...同样,如果没有私钥,就没有人可以通过你的发送消息。通过你的发送信息的只能是你一人,其他人都无法过你的地址发送消息。

    75332

    PKI - 03 密钥管理(如何进行安全的交换)

    发送签名后的给用户C:然后,用户B将签名后的用户A的(明文)和数字签名一起发送给用户C。用户C收到后,可以使用用户B的来验证数字签名,确保的来源和完整性。...用户B签名用户C的:接下来,用户B使用自己的私钥对用户C的进行签名,生成数字签名。这个数字签名确保了用户B对用户C的的认可和背书。...发送签名后的给用户A:用户B将签名后的用户C的和数字签名一起发送给用户A。用户A收到后,同样可以使用用户B的来验证数字签名,确保的来源和完整性。...验证签名:用户A和用户C都可以使用用户B的来验证数字签名,确保的来源和完整性。...如果数字签名验证通过,则表明是由用户B签名的,的来源可信,用户A和用户C可以安全地使用对方的进行加密和通信。

    12100

    kubernete的证书总结 服务端保留和私钥,客户端使用root CA认证服务端的

    服务端保留和私钥,客户端使用root CA认证服务端的。 kubernetes的证书类型主要分为3类: serving CA: 用于签署serving证书,该证书用于加密https通信。...代理(如aggregator)使用--proxy-client-cert-file、--proxy-client-key-file来请求API Server,API Server使用--requestheader-client-ca-file...当kubernetes对应的客户端证书中的usernames和group与自己需求不符合时(无法认证或权限不足等),可以使用认证代理(代理使用另一套证书请求API server) 可以看到serving...Common Name)和组(Organization)进行认证;RequestHeader client证书认证方式与client证书认证方式类似 证书的验证: 显示插件API server支持的证书:openssl...s_client -connect :443更多 验证证书是否由CA签署:openssl verify -CAfile ca.crt the-certificate.crt

    1.4K30

    基础设施(PKI)CFSSL证书生成工具的使用

    非对称加密有两个不一样的密码,一个叫私钥,另一个叫,用其中一个加密的数据只能用另一个密码解开,用自己的都解不了,也就是说用加密的数据只能由私钥解开。...服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是)。Apache和nginx等类似的服务器使用PEM格式证书。...数字证书和 数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。...实际上,数字证书就是经过CA认证过的,除了,还有其他的信息,比如Email,国家,城市,域名等。...通常,证书就是一个包含如下身份信息的文件: 证书所有组织的信息 证书颁发组织的信息 证书颁发组织授予的权限,如证书有效期、适用的主机名、用途等 使用证书颁发组织私钥创建的数字签名 安装cfssl

    1.1K10
    领券