Angular 7 шифрование пароля AES с помощью crypt-js

Я пытаюсь зашифровать пароль с помощью техники AES и отправить его на api, который разработан в .net. Проблема, с которой я столкнулся, заключается в том, что я получаю сообщение об ошибке:

Я использую версию с типом Crypto-JS: Документ Crypto-JS

Padding is invalid and cannot be removed.

Мой машинописный код:

let encrypted = CryptoJS.AES.encrypt('Coll@123', '16ad55fd-598b-45d7-a371-a1e011ec1345', {iv: '6fcc45cc3a8a4764'}).ciphertext.toString();
console.info("Encrypted: ", encrypted);
let decrypted = CryptoJS.AES.decrypt(encrypted, "16ad55fd-598b-45d7-a371-a1e011ec1345", {iv: '6fcc45cc3a8a4764'}).toString(CryptoJS.enc.Base64)
console.info("Decrypted: ", decrypted);

Мой код .net:

public static string encrypt(string encryptString, string EncryptionKey)
{
    Cryptography cript = new Cryptography();
    string ivString = AppConstants.EncryptionKey_IV_Default; //16 character IV
    string key = cript.getHashSha256(EncryptionKey, 32);
    string cipherText = cript.Encrypt(encryptString, key, ivString);
    return cipherText;
}

Примечание. Я не разработал код .net. Я использую чужой API.

Пожалуйста, помогите, я не знаю, что делаю здесь не так. Есть что-то, чего мне здесь не хватает.

Какую проблему вы пытаетесь решить? Почему вы именно шифруете его перед отправкой на сервер? Общепринятый способ сделать это - установить соединение через SSL, получить сертификат и подключиться с помощью httpS, который обеспечивает сквозное шифрование между клиентом и сервером.

Igor 18.12.2018 16:27

Браузер - это тот парень, который никогда не хранит ничьих секретов. По этой причине в OAuth появился новый тип предоставления «неявный тип предоставления». Вы должны хранить свой ключ шифрования в секрете. Браузер не может этого сделать. Пожалуйста, пересмотрите свое дизайнерское решение. Прежде чем переходить к cryptojs, пожалуйста, узнайте у владельца api: режим AES (ECB / CBC / GCM), заполнение, размер ключа, как получить IV. Тогда будет легко.

Saptarshi Basu 18.12.2018 16:45

Api, который я запрашиваю, разработан кем-то другим, и они сгенерировали его с использованием базового фрагмента кода .net, которым я поделился. Проблема в том, что мне нужно подключиться к этому API с помощью Angular / typescript, но сначала мне нужно отправить зашифрованный пароль в запросе, но я всегда получаю сообщение об ошибке с сервера: «Заполнение недействительно и не может быть удалено».

Piyush Kumar 18.12.2018 17:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
1 209
0

Другие вопросы по теме