rsa非对称加密, 加解密须要不一样的秘钥,称做一对。html
rsa加解密分两种,第一:公钥加密私钥解密。第二:私钥加密公钥解密。 须要注意的是,公加私解获得的密文是变化的,而私加公解的获得的密文是固定的。java
生成密匙对须要设置一个长度,经常使用的设置为1024,或者2048。注意,不一样长度的密匙,可以加密的明文最长度是有限制的。说明以下:web
1024的状况:工具
加密时,明文最大长度: 1024/8 - 11 = 117 ,所以须要对明文作117字节长度的分片加密,再拼接。加密
解密时,密文最大长度:1024/8 = 128, 所以须要对密文作128字节长度的分片解密,再拼接。htm
2048的状况:blog
加密时,明文最大长度: 2048/8 - 11 = 245 ,所以须要对明文作245字节长度的分片加密,再拼接。ssl
解密时,密文最大长度:2048/8 = 256, 所以须要对密文作256字节长度的分片解密,再拼接。get
C++调用openssl库生成的密匙对是pkcs#1格式的。java调用库生成的密匙对是pkcs#8格式的。openssl
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-----
附3:pkcs#1秘钥的格式化