2016-08-26 25 views
4

根据RFC 7516,应该可以加密称为JWE的有效负载/声明。JWT加密python中的有效载荷? (JWE)

是否有任何支持它的python库?

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

对不起,如果这是完全明显的,但涉及到加密的事情,我特别谨慎。

回答

5

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 
+0

你能/有人请添加其中一个现有的RSA密钥导入到jwcrypto彻底的例子吗?我一直在尝试,但不断收到错误。 – kilokahn