2016-08-26 14 views
4

RFC 7516によれば、JWEと呼ばれるペイロード/クレームを暗号化できるはずです。JWTはペイロードをPythonで暗号化していますか? (JWE)

これをサポートするPythonライブラリがありますか?

私はPyJWT、python-jose、jwcryptoをチェックしましたが、それらはすべてHS256(JWS)で署名するための例があります。

申し訳ありませんこれは完全に明白ですが、暗号を使用する場合は余分に慎重です。

答えて

5

Joseとjwcryptoの両方のライブラリでJWEを実行できます。 joseについては

jwcryptoについては
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) 

# 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

関連する問題