zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Linux源码Kconfig文件语法分析
    从0移植uboot (一) _配置分析
    ARM汇编与C混合编程
    ARM汇编程序结构
    ARMGNU伪指令
    Linux tcp黏包解决方案
    Linux 服务器模型小结
    Linux IPC udp/tcp/UNIX域 socket编程
    Linux IPC socket 广播,组播
    Linux I/O多路复用
  • 原文地址:https://www.cnblogs.com/IGNB/p/11733256.html
Copyright © 2011-2022 走看看