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程序设计有所帮助。
您可能感兴趣的文章:
- NodeJS 不可逆加密与密码密文保存
- 安卓Shareprefrence实现记住密码自动登录以及保存在shareprefrence里面数据如何加密解密
- Android使用SharedPreferences实现登录帐号和密码的保存方法简介
- 一种不可逆的密码加密与验证方法
- jquery.cookie.js实现用户登录保存密码功能的方法
- input输入密码变黑点密文的实现方法
- asp.net利用cookie保存用户密码实现自动登录的方法
- 使用javascript和jquery两种方法,实现密码明文和密文的转换
- Yii2框架可逆加密简单实现方法
- JAVA 字符串加密、密码加密实现方法
- nodejs 实现钉钉ISV接入的加密解密方法
- string扩展实现强悍的.Net不可逆加密方法 (转载)
- IOS开发之----两种保存用户名和密码实现记住密码库的方法
- radius服务器使用可逆的加密保存密码
- C#使用伪随机数实现加密用户密码的方法
- nodejs开发微信小程序实现密码加密
- php实现可逆加密的方法
- jquery.cookie.js实现用户登录保存密码功能的方法
- Jsp实现Cookie保存用户名和密码(包含:什么是Cookie,Cookie带来的好处,Cookie的主要方法)
- grub密码加密实现方法