对方密钥的使用
不同加密算法的库生成的密钥的格式不同,拿到别人的密钥的时候,需要去掉格式,只保留密钥字符串,然后按照自己的格式拼接起来,再使用,举个例子。
对方的公钥是如下:
publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9QLc98Pt y8Y4gNOhV+yQmCK5uhTxjDVtueNXEgS/QnvcIzJRbN34IK/PAprMUo+BcMr /4LcOkN3ijfuY9siLUO56vfI5o1GrzBPMfHc6TdA8GJc5XBO2FaTcWqkn3g/3 Rakjt0wuHEKjKWYk/lkQNaUe64oizoN1mGTTsw26gOwIDAQAB
我方的公钥格式如下:
—–BEGIN PUBLIC KEY—–
MIGfMA0GCSqGSIbnvcIzAQUAA4GNADCBiQKBgQC9QLc98Pty8Y4gNOhV+yQmCK5u
hTxjDVtueNXEgS/QnvcIzJRbN34IK/PAprMUo+BcMr/4LcOkN3ijfuY9siLUO56v
fI5o1GrzBPMfHc6TdA8GJc5XBO2FaTcWqkn3g/3RanvcIzHEKjKWYk/lkQNaUe6
4oizoN1mGTTsw26gOwIDAQAB
—–END PUBLIC KEY—–
当需要对方的公钥的时需要转化成我方格式:
—–BEGIN PUBLIC KEY—–
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCnvcIzgQC9QLc98Pt y8Y4gNOhV+yQmCK5uhTxjDVtueNXEgS/QnvcIzJRbN34IK/PAprMUo+BcMr /4LcOknvcIzuY9siLUO56vfI5o1GrzBPMfHc6TdnvcIz5XBO2FaTcWqkn3g/3 Rakjt0wuHEKjKWYk/lkQNaUe64oizoN1mGTnvcIzgOwIDAQAB
—–END PUBLIC KEY—–
每行的字符数数要跟我方公钥保持一致
加密结果的网络传输
加密后的结果可能非法字符,在网络传输中可能造成数据丢失,这是可以使用可逆的编码方式处理加密后的字符串,例如base64编码。需要注意的是,解密的时候不要忘了通知对方使用同样的编码方式解码,再解密。
长度限制
非对称加密算法对于加密数据的长度一般是有限制的,这时候有两种思路:
签名
使用对称加密算法加密数据,使用非对称加密算法加密对称加密算法的密钥分段加密
将数据分成若干条短数据,每条数据不超过限制。然后对短数据做非对称加密,最后将得到的短密文连接起来作为加密结果