首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node js Mongoose使用mongoose加密数据

Node js Mongoose使用mongoose加密数据
EN

Stack Overflow用户
提问于 2016-03-29 19:31:42
回答 7查看 3.3K关注 0票数 2

我正在尝试在mongodb中加密我的数据。我使用的是mongoose加密插件,但我有如下错误:

“抛出新错误(‘必须提供options.secret或同时提供options.encryptionKey和options.signingKey');”

下面是我的代码:

代码语言:javascript
复制
var UserSchema = new mongoose.Schema({
  profile: ProfileSchema,
  timeStamp: Date,
  created: Date,
  email: {
    type: String,
    sparse: true
  },
  username: {
    type: String,
  },
  password: {
    type: String,
  }
})

var encKey = process.env.SOME_32BYTE_BASE64_STRING
var sigKey = process.env.SOME_64BYTE_BASE64_STRING

UserSchema.plugin(encrypt, { encryptionKey: encKey, signingKey: sigKey , encryptedFields: ['email']})

那么,我在代码中遗漏了什么呢?我对这个错误一无所知。因为我只是在here中执行了一些步骤,但是失败了。我是node和mongoose的新手。请帮帮我。不管怎样,谢谢你。

EN

回答 7

Stack Overflow用户

发布于 2016-04-27 13:26:09

您最初的错误是因为没有设置process.env.SOME_32BYTE_BASE64_STRINGprocess.env.SOME_64BYTE_BASE64_STRING

您的第二个错误是因为var encKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'var sigKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqwedaa2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'

分别无效的32BYTE_BASE64_STRING和64BYTE_BASE64_STRING。

要生成有效的字符串,可以使用crypto模块:

代码语言:javascript
复制
//32 bytes
require('crypto').randomBytes(32, function(err, buffer) {
    var token = buffer.toString('base64');
});

//64 bytes
require('crypto').randomBytes(64, function(err, buffer) {
    var token = buffer.toString('base64');
});
票数 4
EN

Stack Overflow用户

发布于 2020-04-29 20:38:43

除了你创建的.env文件之外,除了你的javascript文件之外,什么都不应该出现。

这对我很有效。

票数 0
EN

Stack Overflow用户

发布于 2020-07-06 12:32:54

对于本地测试(不提交到git),您需要传入一个变量:

代码语言:javascript
复制
var encKey = "Thisisa32bytebasestring";
var sigKey = "Thisisa64bytebasestring";

对于远程提交,您需要在.env文件中传递SOME_32BYTE_BASE64_STRINGSOME_32BYTE_BASE64_STRING的字符串变量:

代码语言:javascript
复制
var encKey = process.env.SOME_32BYTE_BASE64_STRING
var sigKey = process.env.SOME_64BYTE_BASE64_STRING

您的.env文件应包含:

代码语言:javascript
复制
SOME_32BYTE_BASE64_STRING=Thisisa32bytebasestring
SOME_64BYTE_BASE64_STRING=Thisisa64bytebasestring
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36283058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档