2016-08-26 2 views
4

RFC 7516에 따르면 JWE라는 페이로드/클레임을 암호화 할 수 있어야합니다.JWT는 페이로드를 파이썬으로 암호화합니까? (JWE)

그 밖의 파이썬 라이브러리가 있습니까?

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