首頁  >  文章  >  web前端  >  NodeJS實作不可逆加密與密碼保存

NodeJS實作不可逆加密與密碼保存

小云云
小云云原創
2018-03-19 09:26:121798瀏覽

在應用程式中,常常有要將使用者的密碼加密儲存的需要。 以明文保存密碼有個缺點:一旦洩漏時容易造成極大的損失,可能會連帶其他網站的用戶、密碼也造成損失(因為大多數用戶在多數網站使用相同的帳號與密碼)。

這個洩漏可能來自於兩方面:駭客入侵與維運人員監守自盜。

為了防止密碼明文洩漏,我們需要對在資料庫中保存的密碼欄位進行不可逆加密。準確地說,是加密以後再保存到資料庫中。

常用的不可逆加密演算法有MD5SHA-1

在NodeJS中,它們的使用極為簡便,直接使用官方內建的crypto 套件即可:


##

var clearText = '123456';
// MD5 Hash
require('crypto').createHash('md5').update(clearText).digest('hex');
// 'e10adc3949ba59abbe56e057f20f883e'
// SHA-1 Hash
require('crypto').createHash('sha1').update(clearText).digest('hex');
// '7c4a8d09ca3762af61e59520943dc26494f8941b'

當使用者註冊時,將使用者提交的密碼先不可逆加密,然後將密文保存在資料庫內。

當使用者登入時,將使用者提交的密碼先以相同方式加密,然後與資料庫中的密文比對,來判斷密碼的正誤。

理論上有無數個密碼對應同一個Hash值,不過不用過於擔心被撞表的風險,因為相較之下,你的Web伺服器與資料庫可能會在泛洪攻擊中先行崩潰。

相關推薦:


javascript - 有些網站在使用者提交登入時將密碼框中的密碼用js進行了一次不可逆加密,然後提交。這樣做有必要么?有什麼好處和壞處?

加強使用者密碼保存與檢驗的安全性_PHP教學

#jquery.cookie.js實作使用者登入儲存密碼功能的方法_ jquery

以上是NodeJS實作不可逆加密與密碼保存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn