您好!欢迎来到北极熊

北极熊

热门搜索: 任正非传    神雕侠侣    红楼梦   

使用RSA加密时遇到的一些问题

分类:技术交流 时间:2020-10-21 17:36 浏览:266
概述
对接第三方系统时:RSA会存在秘钥的格式的区别:pkcs1和pkcs8pkcs8是java可用rsa秘钥格式2.使用RSA加密的时候,通常会使用base64进行转码,为了保证转码后的url链接能够访问需要对加密的字符串特殊字符进行转换通常有+转换为-/转化为_=转
内容
  1. 对接第三方系统时: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) 作为签名


评论
资讯正文页右侧广告
联系我们
电话:18936411277
邮箱:1044412291@qq.com
时间:09:00 - 19:00
公众号:北格软件
底部广告