JWT在python中加密有效载荷?(JWE)

发布于 2021-01-29 14:58:06

根据RFC 7516,应该可以加密称为JWE的有效负载/声明。

是否有任何支持该功能的python库?

我已经检查了PyJWT,python-jose和jwcrypto,但它们都只提供了HS256(JWS)签名的示例。

抱歉,如果这是完全显而易见的,但是在涉及加密的事情上,我要格外谨慎。

关注者
0
被浏览
117
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看