Я пытаюсь зашифровать пароль с помощью техники 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.
Пожалуйста, помогите, я не знаю, что делаю здесь не так. Есть что-то, чего мне здесь не хватает.
Браузер - это тот парень, который никогда не хранит ничьих секретов. По этой причине в OAuth появился новый тип предоставления «неявный тип предоставления». Вы должны хранить свой ключ шифрования в секрете. Браузер не может этого сделать. Пожалуйста, пересмотрите свое дизайнерское решение. Прежде чем переходить к cryptojs, пожалуйста, узнайте у владельца api: режим AES (ECB / CBC / GCM), заполнение, размер ключа, как получить IV. Тогда будет легко.
Api, который я запрашиваю, разработан кем-то другим, и они сгенерировали его с использованием базового фрагмента кода .net, которым я поделился. Проблема в том, что мне нужно подключиться к этому API с помощью Angular / typescript, но сначала мне нужно отправить зашифрованный пароль в запросе, но я всегда получаю сообщение об ошибке с сервера: «Заполнение недействительно и не может быть удалено».
Какую проблему вы пытаетесь решить? Почему вы именно шифруете его перед отправкой на сервер? Общепринятый способ сделать это - установить соединение через SSL, получить сертификат и подключиться с помощью httpS, который обеспечивает сквозное шифрование между клиентом и сервером.