根据RFC 7516,应该可以加密称为JWE的有效负载/声明。
是否有任何支持该功能的python库?
我已经检查了PyJWT,python-jose和jwcrypto,但它们都只提供了HS256(JWS)签名的示例。
HS256
抱歉,如果这是完全显而易见的,但是在涉及加密的事情上,我要格外谨慎。
Jose和jwcrypto库都可以执行JWE。
对于jose:
claims = { 'iss': 'http://www.example.com', 'sub': 42, } pubKey = {'k':\ '-----BEGIN PUBLIC KEY-----\n\ -----END PUBLIC KEY-----' } # decrypt on the other end using the private key privKey = {'k': '-----BEGIN RSA PRIVATE KEY-----\n'+\ '-----END RSA PRIVATE KEY-----' } encJwt = jose.encrypt(claims, pubKey) serJwt = jose.serialize_compact(encJwt) decJwt = jose.decrypt(jose.deserialize_compact(serJwt), privKey)
对于jwcrypto:
# algorithm to use eprot = {'alg': "RSA-OAEP", 'enc': "A128CBC-HS256"} stringPayload = u'attack at dawn' E = jwe.JWE(stringPayload, json_encode(eprot)) E.add_recipient(pubKey) encrypted_token = E.serialize(compact=True) E = jwe.JWE() E.deserialize(encrypted_token, key=privKey) decrypted_payload = E.payload