NodeJS實(shí)現(xiàn)不可逆加密與密碼密文保存的方法
本文實(shí)例講述了NodeJS實(shí)現(xiàn)不可逆加密與密碼密文保存的方法。分享給大家供大家參考,具體如下:
在應(yīng)用中,常常有要將用戶的密碼加密儲存的需要。
以明文保存密碼有個缺點(diǎn):一旦泄漏時(shí)容易造成極大的損失,可能會連帶其他網(wǎng)站的用戶、密碼也造成損失(因?yàn)榇蠖鄶?shù)用戶在多數(shù)網(wǎng)站使用相同的賬號與密碼)。
這個泄漏可能來自于兩方面:駭客入侵與運(yùn)維人員監(jiān)守自盜。
為了防止在密碼明文泄漏,我們需要對在數(shù)據(jù)庫中保存的密碼字段進(jìn)行不可逆加密。準(zhǔn)確地說,是加密以后再保存到數(shù)據(jù)庫中。
常用的不可逆加密算法有MD5與SHA-1。
在NodeJS中,它們的使用極為簡便,直接使用官方內(nèi)建的 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'
當(dāng)用戶注冊時(shí),將用戶提交的密碼先不可逆加密,然后將密文保存在數(shù)據(jù)庫內(nèi)。
當(dāng)用戶登錄時(shí),將用戶提交的密碼先以相同方式加密,然后與數(shù)據(jù)庫中的密文比對,來判斷密碼的正誤。
理論上有無數(shù)個密碼對應(yīng)同一個Hash值,不過不用過于擔(dān)心被撞表的風(fēng)險(xiǎn),因?yàn)橄啾戎?,你的Web服務(wù)器與數(shù)據(jù)庫可能會在泛洪攻擊中先行崩潰。
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
在線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程序設(shè)計(jì)有所幫助。
相關(guān)文章
Node.js操作MySQL8.0數(shù)據(jù)庫無法連接的問題解決
使用node.js連接數(shù)據(jù)庫MySQL 8時(shí)候,顯示報(bào)錯 ER_NOT_SUPPORTED_AUTH_MODE,本文就來介紹一下解決方法,感興趣的可以了解一下2023-10-10詳解如何優(yōu)雅在webpack項(xiàng)目實(shí)現(xiàn)mock服務(wù)器
這篇文章主要為大家介紹了詳解如何優(yōu)雅在webpack項(xiàng)目實(shí)現(xiàn)mock服務(wù)器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Node.js重新刷新session過期時(shí)間的方法
在Node.js中,我們通常使用express-session這個包來使用和管理session,保存服務(wù)端和客戶端瀏覽器之間的會話狀態(tài)。那如何才能實(shí)現(xiàn)當(dāng)用戶刷新當(dāng)前頁面或者點(diǎn)擊頁面上的按鈕時(shí)重新刷新session的過期時(shí)間呢,接下來通過本文一起學(xué)習(xí)吧2016-02-02如何用nodejs給C#寫一個數(shù)據(jù)表的實(shí)體類生成工具
這篇文章主要介紹了如何用nodejs給C#寫一個數(shù)據(jù)表的實(shí)體類生成工具,對nodejs感興趣的同學(xué),可以參考下2021-05-05