JWE определяет JSON-дружественный способ шифрования произвольных данных.
Итак, что вы хотите (зашифровать словарь python, который сопоставляется с объектом JSON), это не JWE, а фактически маркер JWT. JWT в основном использует стандарты JWS и JWE для подписи и / или шифрования объекта JSON.
Просто используйте часть JWT в jwcrypto doc: https://jwcrypto.readthedocs.io/en/latest/jwt.html
Должно быть что-то вроде этого:
from jwcrypto.jwt import JWT
from jwcrypto.jwk import JWK
claims = {"my": "claims"} # your claims as a Python dict, that can be JSON-encoded
key = JWK.generate(kty='EC').public() # this generates an EC key, you must replace that with your recipient public key
jwt = JWT(header={"alg": "ECDH-ES+A128KW", "enc": "A256CBC-HS512"}, claims=claims) # set your own alg here according to your needs
jwt.make_encrypted_token(key)
serialized_jwt = token.serialize()
Затем десериализация должна быть выполнена с библиотекой, предполагая, что токен является JWT, в противном случае вы действительно получите строковое представление полезной нагрузки JSON, что вам придется декодировать себя в Python dict.