接口关联-时间戳+token+加密(验证)封装

接口关联采用:时间戳+token+加密(验证)

import base64
from time import time

# 需要安装rsa模块, pip install rsa
import rsa


class HandleSign:
    server_pub = """
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQENQujkLfZfc5Tu9Z1LprzedE
    O3F7gs+7bzrgPsMl29LX8UoPYvIG8C604CprBQ4FkfnJpnhWu2lvUB0WZyLq6sBr
    tuPorOc42+gLnFfyhJAwdZB6SqWfDg7bW+jNe5Ki1DtU7z8uF6Gx+blEMGo8Dg+S
    kKlZFc8Br7SHtbL2tQIDAQAB
    -----END PUBLIC KEY-----
    """

    @classmethod
    def encrypt(cls, msg):
        """
        非对称加密
        :param msg: 待加密字符串或者字节
        :return: 密文
        """
        msg = msg.encode('utf-8')
        pub_key = cls.server_pub.encode("utf-8")
        public_key_obj = rsa.PublicKey.load_pkcs1_openssl_pem(pub_key)  # 创建 PublicKey 对象
        cryto_msg = rsa.encrypt(msg, public_key_obj)  # 生成加密文本
        cipher_base64 = base64.b64encode(cryto_msg)  # 将加密文本转化为 base64 编码
        return cipher_base64.decode()  # 将字节类型的 base64 编码转化为字符串类型



    @classmethod
    def generate_sign(cls, token):
        """
        生成sign
        :param timestamp: 当前秒级时间戳, 为int类型
        :param token: token, 为str类型
        :return: 时间戳和sign组成的字典
        """
        timestamp = int(time())  # 获取当前的时间戳
        prefix_50_token = token[:50]  # 获取token前50位
        message = prefix_50_token + str(timestamp)  # 将token前50位与时间戳字符串进行拼接
        sign = cls.encrypt(message)  # 生成sign
        return {"timestamp": timestamp, "sign": sign}


if __name__ == '__main__':
    token = "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjI2NSwiZXhwIjoxNTc0NjY3MjMzfQ.ftrNcidmk_zxwl0wzdhE5_39bsGlILoSSoTCy043fjhbjhCFG4FwCnOj4iy5svbDlSbgCJM3qRa1zsXJLJmH4A"
    cryto_info = HandleSign.generate_sign(token)
    print(cryto_info)
    s = "1234567"

运用:

除了登陆和注册接口,需要登陆token的使用上面加密封装:
将原来获取到的token再进行处理,

    par_sign = HandleSign.generate_sign(self.token)
    params.upadte(par_sign)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值