Кажется, что CryptoJS "как есть" не обеспечивает такой гибкости.Это связано с тем, что использование MD5 жестко закодировано в функции, используемой для получения ключа из ключевой фразы.Вы можете видеть, что это происходит здесь, в OpenSSLKdf :
var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
KDF обозначает функцию получения ключа, и при ее создании дайджест не предоставляется.То, что EvpKDF.create()
само по себе имеет возможность для различных типов дайджестов, как вы можете видеть в его параметрах конфигурации :
cfg: Base.extend({
keySize: 128/32,
hasher: MD5,
iterations: 1
}),
Это также показывает, что MD5 является значением по умолчанию.
Все это подразумевает, что расшифровка будет работать, если вы измените эту первую строку следующим образом:
var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: C_algo.SHA256 }).compute(password, salt);
и, действительно, после редактирования (в качестве теста) этого файла cipher-core.js
в вашемлокально установленный модуль, ваша последняя строка кода приводит к желаемому Hello World
.
Единственный способ воспроизвести это без изменения самого модуля CryptoJS - это дублировать весь кусок кода из модуля вваш собственный код.