zoukankan      html  css  js  c++  java
  • openssl -- RSA秘钥格式

    1.PEM私钥格式文件 pkcs1的格式于此相同     //PEM_read_RSAPrivateKey

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

    2. PKCS8私钥格式      //pkcs8 长度为861(包含回车),主要应用于java

    -----BEGIN PRIVATE KEY-----
    -----END PRIVATE KEY-----

    2. PEM公钥格式文件    //读取公钥PEM,PUBKEY格式PEM使用PEM_read_RSA_PUBKEY函数

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

    3. PEM RSAPublicKey公钥格式文件   //PEM_read_RSAPublicKey

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

    示例:

    Private Key:

        openssl genrsa -out mykey.pem 1024

    Public Key afterwards:

        openssl rsa -in mykey.pem -pubout > somewhere.pub 

    //以下read rsa_pub == NULL!

    FILE *keyfile = fopen("somewhere.pub", "r");

    RSA *rsa_pub = PEM_read_RSAPublicKey(keyfile, NULL, NULL, NULL);

    //以下read all good

    FILE *keyfile = fopen("mykey.pem", "r");

    RSA *rsa_pri = PEM_read_RSAPrivateKey(keyfile, NULL, NULL, NULL);

    由于OpenSSL的生成默认的公钥文件格式是PEM格式

    PEM_read_RSA_PUBKEY()读取PEM格式PEM_read_RSAPublicKey()读取PKCS# 1格式

    所以,如果你想坚持到 PEM_read_RSAPublicKey(),你可以通过指定 -outform使用PKCS#1格式生成公钥文件生成公钥时DER 选项。

    指令执行过程:

    生成PEM格式私钥

    $ openssl genrsa -out id_rsa_private 1024    #  -out 指定生成文件,此文件包含公钥和私钥两部分,所以即可以加密,也可以解密。 1024 生成密钥的长度

    生成私钥(把RSA私钥转换成PKCS8格式)

    $ openssl pkcs8 -topk8 -inform PEM -in id_rsa_private -outform pem -nocrypt -out id_rsa_private_pkcs

    提取公钥

    openssl rsa -in id_rsa_private -pubout -out id_rsa_public.pub   # -in 指定输入的密钥文件 -out 指定提取生成公钥的文件(PEM公钥格式)

     提取PEM RSAPublicKey格式公钥

    $ openssl rsa -in id_rsa_private -RSAPublicKey_out -out id_rsa_public  # -in 指定输入的密钥文件  -out 指定提取生成公钥的文件(PEM RSAPublicKey格式)

    生成的秘钥文件:

    $ cat id_rsa_private 

    $ cat id_rsa_private_pkcs

    $ cat  id_rsa_public.pub

    $ cat id_rsa_public

    pkcs#8 参数参考链接:https://www.cnblogs.com/aixiaoxiaoyu/articles/8856312.html

    PEM_read_RSAPublicKey(fp, NULL, NULL, NULL)
  • 相关阅读:
    站内信DB设计实现
    redis.conf配置详细解析
    MySQL中的锁(表锁、行锁)
    App开放接口api安全性—Token签名sign的设计与实现
    Linux下恢复误删除的文件
    系统资源监控工具
    MySQL性能监控工具-MONyog
    jstack Dump 日志文件中的线程状态
    数据库性能测试方案示例
    [转载]ant和maven的区别
  • 原文地址:https://www.cnblogs.com/ruigelwang/p/12693320.html
Copyright © 2011-2022 走看看