2016-08-26 5 views
4

Laut RFC 7516 sollte es möglich sein, die Nutzlast/Claim, JWE genannt, zu verschlüsseln.JWT-Verschlüsselung von Nutzdaten in Python? (JWE)

Gibt es irgendwelche Python-Bibliotheken, die das unterstützen?

Ich habe PyJWT, python-jose und jwcrypto überprüft, aber sie haben alle nur Beispiele zum Signieren mit HS256 (JWS).

Sorry, wenn das völlig offensichtlich ist, aber wenn es um Dinge geht, die mit Krypto zu tun haben, bin ich besonders vorsichtig.

Antwort

5

Sowohl Jose und Jwcrypto Bibliotheken können JWE tun.

Für 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) 

Für 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

Können Sie/jemand bitte ein gründliches Beispiel hinzufügen, wo eine bestehende RSA Key importiert wird jwcrypto? Ich habe versucht, aber immer wieder Fehler zu bekommen. – kilokahn

Verwandte Themen