go 实现解密python中的 itsdangerous

博客介绍了如何在Go中实现Python itsdangerous库的解密过程,包括签名验证、时间戳检查和数据提取。在Go实现中遇到base64编码导致的字符变化问题,采用了一种比较字符串差异的方法来校验签名。
摘要由CSDN通过智能技术生成

应用的场景

有现成的python 项目 需要使用go 进行扩展!

 

代码实现

python通过itsdangerous 对数据进行加密

from itsdangerous import TimedJSONWebSignatureSerializer as TJWSS
tjwss = TJWSS('abc', 300)
# 要加密的数据
    data = {
        "id": 123,
    }
# 加密 tjwss.dumps(数据), 返回bytes类型
token = tjwss.dumps(data).decode()
print(token)

 

itsdangerous的加密过程

1.了解header

以下是header的数据,alg 为加密方法 这里默认使用的是SHA256  iat为保存时间  exp 为过期时间

{"alg":"HS256","iat":1554802652,"exp":1554802952}

2.了解obj

下面的json就是obj 这也是我们存进去的数据

{"id":123}

3. 分别对header和obj 进行base64编码并用 一个点相拼接。这是itsdangerous包内的实现

base64d_header = base64_encode(self.serializer.dumps(header))
base64d_payload = base64_encode(self.serializer.dumps(obj))
retur
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值