2011-08-05 88 views
39

我們使用bcrypt獲取永不需要解密的密碼和數據。node.js:加密需要解密的數據?

該怎麼做才能保護其他用戶信息。對於這個例子,我們可以說我們不希望用戶真實姓名是純文本的,以防有人獲得數據庫。

這是一些敏感的數據,但也需要不時調用並以純文本顯示。有沒有簡單的方法來做到這一點?

+4

情況,即攻擊者可以獲取你的數據庫,但不加密密鑰你也磁盤上存儲經常很做作。你確定你已經想到了嗎? –

+24

互聯網非常聰明,樂於助人。當人們選擇通過侮辱你的方式來展示他們的智慧,而不是回答問題或提供實質性指導時,這是非常好的。 – Secesh

回答

104

可以使用crypto模塊:

var crypto = require('crypto'); 
var assert = require('assert'); 

var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL 
var key = 'password'; 
var text = 'I love kittens'; 

var cipher = crypto.createCipher(algorithm, key); 
var encrypted = cipher.update(text, 'utf8', 'hex') + cipher.final('hex'); 
var decipher = crypto.createDecipher(algorithm, key); 
var decrypted = decipher.update(encrypted, 'hex', 'utf8') + decipher.final('utf8'); 

assert.equal(decrypted, text); 
+0

你會推薦添加一個IV來使它更安全嗎?如果是這樣,用'crypto'怎麼做? – Fizzix