Tools4noobs использует PHP-метод mcyrpt_encrypt
, который работает с Zero-Byte-Padding.Размещенный код использует PKCS7-Padding.Чтобы использовать Zero-Byte-Padding, заполнение в коде должно быть изменено на CryptoJS.pad.ZeroPadding
.
Но если следует использовать Pkcs7-Padding, то Tools4noobs не является хорошим выбором, поскольку заполнение не может быть установлено.В этом случае другой параметр - TxtWizard .
Другим источником ошибки является формат ключа.Однако нельзя сказать, является ли это проблемой здесь, поскольку генерация ключа не показана в размещенном коде.Важно, чтобы ключ передавался как WordArray
, а не как строка.Если он передается в виде строки, то он интерпретируется как фраза-пароль, из которой генерируется фактический ключ, см. Ввод шифра .
Следующий код
var key = CryptoJS.enc.Latin1.parse("12345678"); // key as WordArray
var text = "The quick brown fox jumps over the lazy dog";
var encrypted = CryptoJS.DES.encrypt(text, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.ZeroPadding // Zero-Byte-Padding
});
var finalEncrypted = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
console.log(finalEncrypted);
имеет вывод
XokzhoQlYFGG7ZfTNqdvr0QGMsFF24oSZ5v+vsPDNlPA+GbJ2peAY/7pNhpOerOV
в соответствии с выводом Tools4noobs .