Если вы получаете эту ошибку, вероятно, вы указали неправильный ключ. Это может произойти, если ключ неверно закодирован для рассматриваемого файла.
Я бы посоветовал лучше всего закодировать в шестнадцатеричном формате (поскольку здесь мы используем JSON).
Вот полный пример кодирования в файл. json .en c, а затем повторного декодирования. Примечание. Я использую aes-256-cb c, поэтому, если вы измените режим шифрования, возможно, придется изменить ключ и длину iv.
const crypto = require("crypto");
const fs = require("fs");
function encrypt(buffer, algorithm, key, iv) {
const cipher = crypto.createCipheriv(algorithm, key, iv);
return Buffer.concat([cipher.update(buffer, null), cipher.final()]);
}
function decrypt(buffer, algorithm, key, iv) {
const decipher = crypto.createDecipheriv(algorithm, key, iv);
return Buffer.concat([decipher.update(buffer), decipher.final()]);
}
function encryptToJsonFile(buffer, filePath, algorithm, key, iv) {
let encryptedData = encrypt(buffer, algorithm, key, iv);
let fileData = { encryptedData: encryptedData.toString("hex"), iv: iv.toString("hex") };
fs.writeFileSync(filePath, JSON.stringify(fileData), "utf8");
return fileData;
}
function decryptJsonFile(filePath, algorithm, key) {
let fileData = JSON.parse(fs.readFileSync(filePath, "utf8"));
let encryptedData = Buffer.from(fileData.encryptedData, "hex");
let iv = Buffer.from(fileData.iv, "hex");
return decrypt(encryptedData, algorithm, key, iv);
}
const filePath = "./test.json.enc";
const EncryptionAlgorithm = "aes-256-cbc";
const key = Buffer.from("70ac30ae736068d90467beec0aedd75f3714cfe1e83b030c67911bb649316be0", "hex");
const iv = Buffer.from("3d4be42df33cc6a030aa54df2e144920", "hex");
const textToEncrypt = "My secrets are here";
const bufferToEncrypt = Buffer.from(textToEncrypt, "utf8");
console.log("Encrypted:", encryptToJsonFile(bufferToEncrypt, filePath, EncryptionAlgorithm, key, iv));
console.log("Decrypted:", decryptJsonFile(filePath, EncryptionAlgorithm, key).toString("utf8"));