我有一个加密文件的脚本,但我想打印一个console.log();在加密后。我尝试了以下但它没有用:
var figlet = require('figlet');
var encryptor = require('file-encryptor');
var crypto = require('crypto');
var CryptoJS = require("crypto-js");
var node_cryptojs = require('node-cryptojs-aes');
figlet('ZaCrypt', function(err, data) {
if (err) {
console.log('Something went wrong...');
console.dir(err);
return;
}
console.log(data)
});
var message = "Zaseth is my bff";
var key = encrypted_json_str;
var options = {
algorithm: 'blowfish'
};
// Encrypt message
var r_pass = crypto.randomBytes(128);
var r_pass_base64 = r_pass.toString("base64");
var CryptoJS = node_cryptojs.CryptoJS;
var JsonFormatter = node_cryptojs.JsonFormatter;
var encrypted = CryptoJS.AES.encrypt(message, r_pass_base64,
{
format: JsonFormatter
});
var encrypted_json_str = encrypted.toString();
// Encyption complete
// Encrypt file.
encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function (err){
if (err) {
console.log("There was an error...");
throw err;
return;
} else {
console.log("File encrypted!");
}
// Encryption complete.
});
为什么这不起作用?我要打印的加密部分位于底部。
我只是尝试了以下但是没有效果:
// Encrypt file.
encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function (err) {
if(err) {
return console.log(err);
}
console.log("File encrypted!");
// Encryption complete.
});
答案 0 :(得分:1)
你指定了太多的论点;所以,你的回调处于错误的位置。
Encryptor.encryptFile()
定义了4-5个参数的处理:
Encryptor.encryptFile = function(inputPath, outputPath, key, options, callback) {
if(typeof options === 'function') {
callback = options;
options = {};
}
// and so on...
您的代码有6:
encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function(err){
// ^-- what is this?
message
论证将一切都降低了。 encryptFile()
认为您的消息是密钥,您的密钥是选项,您的选项是回调....并完全忽略回调。由于意外无效的参数类型,它可能还会导致在错误处理之前抛出错误。
答案 1 :(得分:1)
你有表达式
var key = encrypted_json_str
<强>前强>
encrypted_json_str = encrypted.toString()
这意味着key
已分配undefined
(因为此时encrypted_json_str
仍为undefined
),这将导致encryptFile()
方法抛出错误< / p>
正如@canon已经解释的那样,在您对message
的调用中,您还有一个额外的参数encryptFile()
。这会导致您将message
参数用作key
参数,将key
用作options
,将options
用作callback
。由于options
实际上不是一个函数,当encryptFile()
尝试调用它时(认为它是callback
),它会抛出错误callback is not a function
在致电encryptFile()
方法时,请移除message
参数并将key
参数替换为encrypted_json_str