Я пытаюсь шифровать / дешифровать шестнадцатеричные данные , используя узел js, модуль 'crypto' с алгоритмом DES-ECB . В официальной крипто-документации они приводят пример шифрования aes-192 в режиме CBC (см. Прилагаемый код), но в режиме ECB не требуется iv (вектор инициализации) . Я не знаю, как адаптировать этот код для шифрования в режиме ECB с помощью алгоритма DES.
Вот код JavaScript, приведенный в официальной документации модуля js 'crypto' (https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_class_cipher):
const crypto = require('crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Key length is dependent on the algorithm. In this case for aes192, it is
// 24 bytes (192 bits).
// Use async `crypto.scrypt()` instead.
const key = crypto.scryptSync(password, 'salt', 24);
// Use `crypto.randomBytes()` to generate a random iv instead of the static iv
// shown here.
const iv = Buffer.alloc(16, 0); // Initialization vector.
const cipher = crypto.createCipheriv(algorithm, key, iv);
let encrypted = '';
cipher.on('readable', () => {
let chunk;
while (null !== (chunk = cipher.read())) {
encrypted += chunk.toString('hex');
}
});
cipher.on('end', () => {
console.log(encrypted);
// Prints: e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa
});
cipher.write('some clear text data');
cipher.end();
В моем случае я должен изменить поле «алгоритм» на:
const algorithm = 'des-ecb'
Но тогда я также должен адаптировать части, относящиеся к iv (так как для алгоритма DES-ECB не требуется iv), и я не знаю, как это сделать ...
Большое спасибо!