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秘鑰的格式化
RSA 加解密 秘鑰對說明