Расшифровка закодированного base64 в токен для извлечения утверждений с использованием AES-CBC в C# ⇐ C#
Расшифровка закодированного base64 в токен для извлечения утверждений с использованием AES-CBC в C#
В настоящее время я работаю над аутентификацией от внешней третьей стороны, которая отправляет нам закодированную строку base64, которую мы, в свою очередь, должны декодировать, а затем расшифровать, чтобы получить утверждения пользователя. Вот метод, который я создал на C# для расшифровки значения, которое мы получаем от них:
var key = Encoding.UTF8.GetBytes(_secretKey); байт [] iv; используя (var aesAlg = Aes.Create()) { вар decodedBytes = Convert.FromBase64String(_jwtEncryptedToken); iv = новый байт[16]; Array.Copy(decodedBytes, 0, iv, 0, iv.Length); aesAlg.Key = ключ; aesAlg.IV = iv; aesAlg.Mode = CipherMode.CBC; aesAlg.Padding = PaddingMode.PKCS7; Декриптор ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); используя (var msDecrypt = новый MemoryStream(decodedBytes)) { используя (var csDecrypt = новый CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { используя (var srDecrypt = новый StreamReader(csDecrypt)) { вернуть srDecrypt.ReadToEnd(); } } } } Когда я пытаюсь протестировать его вместе с полученным закодированным кодом Base64, он всегда возвращает ошибку: «Входные данные не являются полным блоком»
П.С. Секретный ключ состоит из 16 символов, а _jwtEncryptedToken — это закодированный код base64, который я получаю
Может ли кто-нибудь помочь с этим?
Заранее спасибо.
В настоящее время я работаю над аутентификацией от внешней третьей стороны, которая отправляет нам закодированную строку base64, которую мы, в свою очередь, должны декодировать, а затем расшифровать, чтобы получить утверждения пользователя. Вот метод, который я создал на C# для расшифровки значения, которое мы получаем от них:
var key = Encoding.UTF8.GetBytes(_secretKey); байт [] iv; используя (var aesAlg = Aes.Create()) { вар decodedBytes = Convert.FromBase64String(_jwtEncryptedToken); iv = новый байт[16]; Array.Copy(decodedBytes, 0, iv, 0, iv.Length); aesAlg.Key = ключ; aesAlg.IV = iv; aesAlg.Mode = CipherMode.CBC; aesAlg.Padding = PaddingMode.PKCS7; Декриптор ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); используя (var msDecrypt = новый MemoryStream(decodedBytes)) { используя (var csDecrypt = новый CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { используя (var srDecrypt = новый StreamReader(csDecrypt)) { вернуть srDecrypt.ReadToEnd(); } } } } Когда я пытаюсь протестировать его вместе с полученным закодированным кодом Base64, он всегда возвращает ошибку: «Входные данные не являются полным блоком»
П.С. Секретный ключ состоит из 16 символов, а _jwtEncryptedToken — это закодированный код base64, который я получаю
Может ли кто-нибудь помочь с этим?
Заранее спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Php openssl_encrypt (aes-256-cbc) к node.js cryptojs.aes.decrypt приводит к пустой строке
Anonymous » » в форуме Php - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-