我正在尝试在插入 MongoDB 之前和之后加密和解密值。我正在使用猫鼬模式并调用 get 和 set 方法进行加密和解密。通过调用 set 方法对数据进行加密,但在从 MongoDB 检索数据时,它并没有解密。这是我的架构和加密解密方法:
var tempSchema = new Schema({
_id: {type: Schema.ObjectId, auto: true},
name:{type: String},
sample_details:{
_id: false,
objects: [{
object_key:{type: String},
object_value:{type: String, get:decrypt, set:encrypt}
}],
type_params:[{
type_key:{type: String},
type_value:{type: String, get:decrypt, set:encrypt}
}],
test_body:{type: String, get:decrypt, set:encrypt}
}}, {
toObject : {getters: true, setters: true},
toJSON : {getters: true, setters: true}
});
以下是使用的加密和解密方法:
function encrypt(text){
var cipher = crypto.createCipher('aes-256-cbc', secret_key);
var crypted = cipher.update(text,'utf8','hex');
crypted += cipher.final('hex');
return crypted;
}
function decrypt(text){
if (text === null || typeof text === 'undefined') {
return text;
};
var decipher = crypto.createDecipher('aes-256-cbc', secret_key);
var dec = decipher.update(text, 'hex', 'utf8');
dec += decipher.final('utf8');
return dec;
}
任何帮助表示赞赏,object_value 和 type_value 在保存到 db 时被加密,但在从 db 检索时未解密。