对接第三方系统时:RSA会存在秘钥的格式的区别:pkcs1和pkcs8
pkcs8是java可用rsa秘钥格式
2.使用RSA加密的时候,通常会使用base64进行转码,为了保证转码后的url链接能够访问需要对加密的字符串特殊字符进行转换通常有
+转换为-
/转化为_
=转化为空格
所以我们在解密字符串的时候需要转化回去,再解密
3. 对长字符串加密解密需要截取字符串分段加密:
def public_long_encrypt(self, data, charset='utf-8'): data = data.encode(charset) length = len(data) default_length = 117 res = [] for i in range(0, length, default_length): res.append(self.pub_key_obj.encrypt(data[i:i + default_length])) byte_data = b''.join(res) return base64.urlsafe_b64encode(byte_data) def private_long_decrypt(self, data, sentinel=b'decrypt error'): str_data = data+"=" data = base64.urlsafe_b64decode(str_data) length = len(data) default_length = 128 res = [] for i in range(0, length, default_length): res.append(self.pri_key_obj.decrypt(data[i:i + default_length], sentinel)) return str(b''.join(res), encoding = "utf-8")12345678910111213141516171819
4.使用RSA去传递参数时一般要配合sign签名使用,设计接口为保证数据和系统的安全性
我一般采用 MD5(RSA(json)+key) 作为签名
苏公网安备 32132202001088号
| Copyright 北极熊 北格技术 版权所有