@jenya7771

Как правильно шифровать (дешифровать) данные, алгоритмом 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 битный ключ.
И при использовании рандомной соли, не получается дешифровать данные, почему так?
Спасибо!
  • Вопрос задан
  • 636 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы