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祕鑰的格式化