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

  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")

4.使用RSA去传递参数时一般要配合sign签名使用,设计接口为保证数据和系统的安全性
我一般采用 MD5(RSA(json)+key) 作为签名

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值