Как правильно шифровать (дешифровать) данные, алгоритмом AES через библиотеку CryptoJs? Здравствуйте, подскажите пожалуйста, как правильно шифровать и дешифровать данные с помощью библиотеки CryptoJs? Сейчас я пришёл к вот такому варианту:const key = CryptoJS.lib.WordArray.random(256).toString() // Шифрование сообщения function encryptMessage(message) { var iv = CryptoJS.lib.WordArray.random(256) var encrypted = CryptoJS.AES.encrypt(message, key, { iv: iv }); return encrypted.toString() } // Дешифрование сообщения function decryptMessage(encrypted) { const decrypted = CryptoJS.AES.decrypt(encrypted, key) return decrypted.toString(CryptoJS.enc.Utf8) } И меня появился вопрос, что если я буду использовать ключ, больше 256 бит, например 1024, алгоритм его примет, или возьмёт только первые 254 бита? И iv всегда рандомные создавать, для дешифровки они не нужны? И стоит ли использовать дополнительно PBKDF2:const key = CryptoJS.lib.WordArray.random(256).toString() function encryptMessage(message) { var salt = CryptoJS.lib.WordArray.random(32) var iv = CryptoJS.lib.WordArray.random(256) var newKey = CryptoJS.PBKDF2(key, salt, { keySize: 256, iterations: 10 }) var encrypted = CryptoJS.AES.encrypt(message, newKey, { iv: iv }); return encrypted.toString() } Как я понял, это поможет небольшой пароль (10 бит), преобразовать в 256 битный ключ. И при использовании рандомной соли, не получается дешифровать данные, почему так? Спасибо!