使用现代加密技术验证和加密的api令牌
pybranca的Python项目详细描述
python的branca令牌
使用现代密码验证和加密的api令牌。
什么?
Branca是一种安全易用的令牌格式,这使得很难向自己的脚开枪。它使用ietf xchacha20-poly1305 aead对称加密创建加密和防篡改令牌。有效负载本身是任意字节序列。例如,可以使用json对象、纯文本字符串甚至由MessagePack或Protocol Buffers序列化的二进制数据。
虽然不是设计目标,但是可以使用Branca as an alternative to JWT。
安装
使用pip安装库。注意,还必须安装libsodium。
$ brew install libsodium
$ pip install pybranca
用法
令牌的有效负载可以是任何东西,比如简单的字符串。
frombrancaimportBrancabranca=Branca(key="supersecretkeyyoushouldnotcommit")token=branca.encode("Hello world!")payload=branca.decode(token)print(token)print(payload)# 87xqn4ACMhqDZvoNuO0pXykuDlCwRz4Vg7LS3klfHpTiOUw1ramOqfWoaA6bvsGwOQ49MDFOERU0T# b'Hello world!'
对于更复杂的数据结构,json是常见的选择。
importjsonfrombrancaimportBrancabranca=Branca(key="supersecretkeyyoushouldnotcommit")string=json.dumps({"scope":["read","write","delete"]})token=branca.encode(string)payload=branca.decode(token)print(token)print(payload)print(json.loads(payload))# 6AlLJaBIFpXbwKTFsI3xXsk4se8YsdEKOtxYwtYDQHpoqabwZzmxAUS99BLxBJpmfJqnJ9VvzJYO1FXfsX78d0YsvTe43opYbUPgUao0EGV5qBli# b'{"scope": ["read", "write", "delete"]}'# {'scope': ['read', 'write', 'delete']}
通过使用MessagePack,您可以拥有更多的紧凑令牌。
importmsgpackfrombrancaimportBrancabranca=Branca(key="supersecretkeyyoushouldnotcommit")packed=msgpack.dumps({"scope":["read","write","delete"]})token=branca.encode(packed)payload=branca.decode(token)print(token)print(payload)print(msgpack.loads(payload,raw=False))# 3iJOQqw5CWjCRRDnsd7Jh4dfsyf7a4qbuEO0uT8MBEvnMVaR8rOW4dFKBVFKKgxZkVlNchGJSIgPdHtHIM4rF4mZYsriTE37# b'\x81\xa5scope\x93\xa4read\xa5write\xa6delete'# {'scope': ['read', 'write', 'delete']}
许可证
麻省理工学院的执照。有关详细信息,请参见License File。