RSA 加解密 秘钥对说明

rsa非对称加密, 加解密需要不同的秘钥,称作一对。

rsa加解密分两种,第一:公钥加密私钥解密。第二:私钥加密公钥解密。 需要注意的是,公加私解得到的密文是变化的,而私加公解的得到的密文是固定的。

生成密匙对需要设置一个长度,常用的设置为1024,或者2048。注意,不同长度的密匙,能够加密的明文最长度是有限制的。说明如下:

1024的情况:

    加密时,明文最大长度: 1024/8 - 11 = 117   ,因此需要对明文做117字节长度的分片加密,再拼接。

    解密时,密文最大长度:1024/8 = 128, 因此需要对密文做128字节长度的分片解密,再拼接。

2048的情况:

    加密时,明文最大长度: 2048/8 - 11 = 245   ,因此需要对明文做245字节长度的分片加密,再拼接。

    解密时,密文最大长度:2048/8 = 256, 因此需要对密文做256字节长度的分片解密,再拼接。

C++调用openssl库生成的密匙对是pkcs#1格式的。java调用库生成的密匙对是pkcs#8格式的。

pkcs#1
-----BEGIN RSA  PUBLIC KEY-----
......公钥
-----END RSA  PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
......私钥
-----END RSA PRIVATE KEY-----

pkcs#8
-----BEGIN PUBLIC KEY-----
......公钥
-----END PUBLIC KEY-----

-----BEGIN PRIVATE KEY-----
......私钥
-----END PRIVATE KEY-----

附1:pkcs#1 pkcs#8 在线转换工具

附2:C++调用openssl库生成秘钥对

附3:pkcs#1秘钥的格式化

附4:C++ 使用openssl库实现 DES 加密——CBC模式 && RSA加密——公加私解——私加公解

原文地址:https://www.cnblogs.com/azbane/p/10180243.html