您好,登錄后才能下訂單哦!
本文實例講述了NodeJS實現不可逆加密與密碼密文保存的方法。分享給大家供大家參考,具體如下:
在應用中,常常有要將用戶的密碼加密儲存的需要。
以明文保存密碼有個缺點:一旦泄漏時容易造成極大的損失,可能會連帶其他網站的用戶、密碼也造成損失(因為大多數用戶在多數網站使用相同的賬號與密碼)。
這個泄漏可能來自于兩方面:駭客入侵與運維人員監守自盜。
為了防止在密碼明文泄漏,我們需要對在數據庫中保存的密碼字段進行不可逆加密。準確地說,是加密以后再保存到數據庫中。
常用的不可逆加密算法有MD5與SHA-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服務器與數據庫可能會在泛洪攻擊中先行崩潰。
PS:關于加密解密感興趣的朋友還可以參考本站在線工具:
在線SHA1加密工具:
http://tools.jb51.net/password/sha1encode
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
希望本文所述對大家nodejs程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。