Если вы хотите понять, что такое JWE, вы можете начать с прочитать спецификацию .
Данные, которые у вас есть, - это JWE в режиме компактной сериализации подходит для веб-контекста:
- 5 частей, разделенных точками
- Все детали имеют кодировку base64, надежно закодированную
- Детали могут быть пустыми строками
Подобно JWS (подписанным токенам), первая часть JWE - это заголовок. Он должен иметь как минимум:
- алгоритм шифрования ключа
alg
, который соответствует алгоритму, используемому для шифрования ключа шифрования контента (CEK) - алгоритм шифрования контента
enc
это соответствует алгоритму, используемому для шифрования / дешифрования содержимого с помощью CEK
. kid
- это необязательный параметр заголовка, который указывает идентификатор ключа, используемого для вычисления этого токена. Ключ, который вы нашли, это ключ publi c. Его можно использовать для создания других токенов, подобных этому. Вам нужен закрытый ключ для расшифровки этих токенов.
Вторая часть токена - это зашифрованный CEK. Он может быть пустым в зависимости от алгоритма шифрования контента (например, dir
или ECDH-ES
). Чтобы получить CEK, вам понадобится algortihm alg
(RSA-OAEP-256
) и закрытый ключ.
Части 3, 4 и 5 - это вектор инициализации (IV), зашифрованное содержимое и тег аутентификации
С помощью этого CEK, алгоритма шифрования контента enc
(A256GCM), частей 3 (IV) и 5 (тег), вы сможете расшифровать содержимое токена (часть 4).
Без закрытого ключа RSA вы не сможете его расшифровать (если только вы не знаете, как атаковать RSA-OAEP-256 alg или у вас есть массивные хакерские инструменты)