准备工作

生成私钥文件(里面已包含公钥)

openssl genrsa -out private.pem 1024

从私钥文件中提取公钥

openssl rsa -in private.pem -pubout -out public.pem



如果用

openssl rsa -in private.pem -RSAPublicKey_out -out public.pem

报错 unknown option -RSAPublicKey_out

openssl 是0.9.8e版本的,不知道为啥没这个参数

没了这个参数,读取公钥的时候只能用 PEM_read_RSA_PUBKEY

而不能用PEM_read_RSAPublicKey,因为带-RSAPublicKey_out参数生成的pem文件不一样(不仅仅是头尾)



网上抄来的

函数PEM_read_RSA_PUBKEY读取的是

-----BEGIN PUBLIC KEY-----

函数PEM_read_RSAPublicKey读取的是

-----BEGIN RSA PUBLIC KEY-----



但是!!!,为毛private.pem里面是

-----BEGIN RSA PRIVATE KEY-----

这样的,

而生成的public.pem竟然是

-----BEGIN PUBLIC KEY-----

的?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/pem.h> int main()
{
RSA *rsa; FILE *fp;
if ((fp = fopen("C:\\openssl_test\\public.pem", "r")) == NULL) {
return -1;
} rsa = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL);
RSA_free(rsa);
fclose(fp); if ((fp = fopen("C:\\openssl_test\\private.pem", "r")) == NULL) {
return -1;
}
rsa = PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL); RSA_free(rsa);
return 0;
}

openssl pem文件的读取的更多相关文章

  1. openssl pem 生成公钥和私钥及文件

    openssl pem.h 中提供了关于pem格式密钥对的操作接口 通常使用.pem的格式文件来保存openssl 生成的密钥对: 在终端下 cat xxx.pem 可以看到 p.p1 { margi ...

  2. Java Keytools 证书转换成Openssl 的PEM 文件或keytools 导出私钥文件

    上一遍又说到Godaddy 生请证书流程与操作: 现因使用Incapsula 防护使用到https,在添加网站时需要自定义证书,其中需要上传私钥信息,因公钥是能过keytool 生成所以需要导出私钥信 ...

  3. openssl pem密钥文件rsa加密解密例子

    准备工作 命令行加密解密,用与比对代码中的算法和命令行的算法是否一致 C:\openssl_test>openssl rsautl -encrypt -in data.txt -inkey pu ...

  4. openssl从内存中读取私钥进行签名

    麻痹的找了好久,真恶心! #include <stdio.h> #include <stdlib.h> #ifdef WIN32 #include <windows.h& ...

  5. iOS推送证书转pem文件

    iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ...

  6. 实战p12文件转pem文件

    1.首先生成一个ssl的证书 选择app IDS 后实现下面这个(这里不详细说明怎么生成了) 点击Download按钮,我就下载Development的ssl证书,下载成功后,双击运行,会打开钥匙串程 ...

  7. pfx,cer转pem,并对通过pem文件进行签名与验签

    因为PHP无法读取.pfx文件,所以可以先转换为.pem文件然后在读取里面的数据,可以读取.cer文件,为了两方面统一,就都换成.pem然后再进行加签和验签. sign.php <?php de ...

  8. (转)iOS消息推送机制中pem文件的生成

    转自:http://2015.iteye.com/blog/1567777 以前写了一篇文章:iOS消息推送机制的实现,这篇文章中生成的是p12文件,但是php是用的pem文件,生成的方法和p12文件 ...

  9. (转)实战p12文件转pem文件

    需要实现这个功能的一般都是app开发证书不支持通配符(即com.xxx.xxx.xxx格式),在业务需求上类似消息推送这样的业务. 1.首先生成一个ssl的证书 选择app IDS 后实现下面这个(这 ...

随机推荐

  1. openjdk1.8 源码地址

    http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/656ab3b39178/src/

  2. JMeter学习(二十九)自动化badboy脚本开发技术(转载)

    转载自 http://www.cnblogs.com/yangxia-test 一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报 ...

  3. Java拦截器+注解搭配使用

    拦截器加注解可以实现登录权限验证等操作,我的应用场景也是为了验证这个,下面是简单的实现步骤   一.什么是拦截器? 拦截器是对action的一种拦截,可以在请求前后进行一些处理 可拦截controll ...

  4. Appium1.6启动iOS真机

      前提:已经安装了Appium1.6版本,我这里用的是GUI版本   环境要求: 真机iOS9.3及以上 macOS 10.11或10.12 Xcode7及以上   安装步骤如下 第一步:iOS真机 ...

  5. Tableau-安装的坑

    前言: 为了学习Tableau的教程,我下载了这个软件从官网,结果安装的时候一直报一个奇怪的错误, 由于当时没有截图,只记得错误代码Xo80076666好像是,提示安装失败,已经有另一个产品安装 在我 ...

  6. GsonFormat的使用 (转)

    一.Android Studio快速添加Gson 具体操作:        1.File->Project Structure:   2.app->Dependencies->&qu ...

  7. angularjs 粘贴事件

    参考 http://www.jb51.net/article/89708.htm ng-paste 需要setTimeout,否则无法获取到数据

  8. 24 【python入门指南】class

    一.类 1.1,构造函数,析构函数 #!/bin/python class dog(): def __init__(self, age, name): self.age = age self.name ...

  9. HDU 6214 Smallest Minimum Cut(最少边最小割)

    Problem Description Consider a network G=(V,E) with source s and sink t. An s-t cut is a partition o ...

  10. 动态替换iframe的src及动态改变iframe的高度

    实现效果:点击左侧右侧内容变化,但左侧保持不变(如折叠等) 动态替换iframe的src <iframe width="100%" frameBorder="0&q ...