2016-03-29 27 views
0

私はmongodbでデータを暗号化しようとしています。 mongoose-encryptionプラグインを使用していますが、このようなエラーがあります:ノードjs Mongooseは、mongoose-encryptionを使用してデータを暗号化します。

"throw new error( 'options.secretまたはboth options.encryptionKeyとoptions.signingKeyの両方を指定する必要があります)そう、私は私のコードで何が欠けている

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のステップに従っているが、失敗したので。私はノードとマングースでは新しいです。どうもありがとうございました...

+0

: VAR enckeyという= process.env.SOME_32BYTE_BASE64_STRING VAR sigKey = process.env.SOME_64BYTE_BASE64_STRING を

あなたが暗号モジュールを使用することができ、有効な文字列を生成するには するvar enckeyという= 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqweda' するvar sigKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqwedaa2V5YWxpYXNpc3RoZWJlc3R3b3cqweda' そのE:私は、変数enckeyというおよびsignKeyを変更しようとした場合エラーが返されましたが、エラーを返しますが、エラーを返します。 "エラー:options.encryptionKeyは32バイトのbase64文字列でなければなりません" encKeyは既に32バイトであるため、これを混乱させます。 提案がありますか? – lutfi

答えて

0

process.env.SOME_32BYTE_BASE64_STRINGprocess.env.SOME_64BYTE_BASE64_STRINGが設定されていません。 var encKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'var sigKey = 'a2V5YWxpYXNpc3RoZWJlc3R3b3cqwedaa2V5YWxpYXNpc3RoZWJlc3R3b3cqweda'

がそれぞれ有効32BYTE_BASE64_STRINGと64BYTE_BASE64_STRINGではないので

あなたの2番目のエラーです。私はそのために、この行のお知らせ

//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'); 
}); 
関連する問題