• openssl进行RSA加解密(C++)


    1. 密钥对
      根据RSA的加密机制(自行查找RSA工作原理),通常可以私钥加密-公钥解密(多用于签名),公钥加密-私钥解密(多用于数据传输加密),私钥可以生成公钥。
    2. 密钥对生成
      生成私钥,长度为2048,默认格式为PKCS1,即,头部和尾部有RSA字样
      openssl genrsa -out rsa_private_key.pem 2048
      

      生成对应公钥

      openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key_2048.pem
      

      公钥格式通常不表,我查看了很多资料都不说这个,但是可以发现这样生成的公钥头部没有RSA,所以应该为PKCS8格式

    3. 密钥转换,PKCS1 -> PKCS8
      openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out private_pkcs8.pem
      查了一些资料一般也只是转换私钥的格式。
    4. C++

       rsa加密的public key格式有多种,常见的有两种,一种密钥头为‘-----BEGIN RSA PUBLIC KEY-----’,一种开头为‘-----BEGIN PUBLIC KEY-----’,二者分别对应rsa的PKCS#1和PKCS#8格式。
        使用openssl库加载rsa的公钥时,使用的函数也不同。以字符串公钥为例,对PKCS#1格式的密钥加载使用PEM_read_bio_RSAPublicKey()函数,对PKCS#8格式公钥的加载使用PEM_read_bio_RSA_PUBKEY()函数。

      ---摘抄自下面第二个链接,这个说出了关键点。公钥要区分格式读取,私钥不用。

    参考: https://www.jianshu.com/p/f18304b1b513

      https://blog.csdn.net/freesonWANG/article/details/87717361

    可以图形化看到的东西坚决不会用命令行ORZ

  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/IGNB/p/11733256.html
Copyright © 2020-2023  润新知