bcrypt

聊聊主流加密算法及该如何设计我们的用户密码

*爱你&永不变心* 提交于 2020-04-26 07:32:26
主流加密算法 对称加密 对称加密指加密和解密使用相同密钥的加密算法,有时又叫传统密码算法而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。常见的对称加密算法有: 1.DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 2.3DES 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法

JavaWeb-SpringSecurity自定义登陆页面

北战南征 提交于 2020-04-24 09:20:44
  系列博文   项目已上传至guthub   传送门   JavaWeb-SpringSecurity初认识   传送门   JavaWeb-SpringSecurity在数据库中查询登陆用户   传送门    JavaWeb-SpringSecurity自定义登陆页面    传送门   JavaWeb-SpringSecurity实现需求-判断请求是否以html结尾   传送门   JavaWeb-SpringSecurity自定义登陆配置   传送门   JavaWeb-SpringSecurity图片验证ImageCode   传送门   JavaWeb-SpringSecurity记住我功能   传送门   JavaWeb-SpringSecurity使用短信验证码登陆   传送门   在static文件夹下添加一个login.html,作为自定义登陆页面    <! DOCTYPE html > < html > < head > < meta charset ="UTF-8" > < title > Insert title here </ title > </ head > < body > < h1 > Gary登陆页面 </ h1 > < form action ="/loginPage" method ="post" > 用户名: < input type =

使用Bcrypt对密码进行加密与解密验证

删除回忆录丶 提交于 2020-04-23 14:41:04
Bcrypt是一个跨平台的文件加密工具。 为了保护用户的明文密码不被泄露,一般会对密码进行单向不可逆加密——哈希。 而Bcrypt恰恰就做到这一点,通过Bcrypt加密的明文密码即使解密也不是真的“解密”,哪怕是内部人员,也不会看到密码。 这大大的提高了用户的安全级别。那么怎么使用呢?这里我用node的项目演示。 首先引入Bcrypt yarn add bcrypt 这是一个用户注册时输入的密码 if (isSigned) { res.render( 'user' , { ret: true , data: JSON.stringify({ msg: '用户名已经存在!' }) }) // 当用户没有注册时,首先将密码加密,再将用户名和加密后的密码入库 } else { let result = await userModel.signup({ username, password: await _doCrypto(password) }) } // 将从前端接受到的password进行加密 const _doCrypto = (password) => { return new Promise((resolve) => {   //这里的salt值,每次都是不一样的,也是根据取到不同的salt,所以每次的加密结果都不一样 bcrypt.genSalt( 10, function

scrypt

前提是你 提交于 2020-04-06 10:49:07
scrypt是由著名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。 来源: oschina 链接: https://my.oschina.net/Skynet01/blog/3214163

bcrypt 安装不成功解决办法

旧街凉风 提交于 2020-03-27 10:15:52
网站在登录前,需要进行注册收集用户基本信息,bcrypt 提供密码加密验证的方法,但是使用不正确,会给初学者带来各种问题。 bcrypt 的安装: npm i bcrypt 经过测试,经常安装不成功,原因和node.js的版本有原因,我在 下面这篇文章中有记录解决办法: bcrypt 安装不成功解决办法 但也不是万能的,如果还不能解决的话,可以尝试给 bcrypt 指定版本号安装: npm install --save bcrypt@2.0.1 一般是会成功的!! 用户在注册时,除了收集用户信息外,因为要用到 bcrypt ,必须要在注册时对密码进行加密,加密后再保存到数据库中。因为用户登录时,使用 bcrypt 的 compare 方法,这个方法是验证加密的密码的,如果在注册时没有加密,而登录时使用 compare 进行验证,直接会导致,将 mongodb 直接挂掉!而且登录也不会成功,也不报错,也不提示的这种尴尬的局面,会导致无从下手。 bcrypt 注册的逻辑: 收集用户(表单)的基本信息 bcrypt.genSalt() 给密码加密 加密完成,将数据保存在数据库 router.post('/register',urlencodedParser,(req,res) => { //验证 const newUser = new UserSchema({ email: req

Node.js+express实现博客管理项目

泄露秘密 提交于 2020-03-10 20:05:14
前言: 经过一段时间的前端学习,终于到了开始做一些项目来进行自我检验的时候了.下面我把本次项目的内容和过程加以总结,希望可以得到大家的支持,有需要源码的可以关注我私信,或者留邮箱地址. 1. 项目环境搭建 1.1 项目介绍 博客的内容展示页面 博客的管理页面 1.2 项目需要的文件夹及用到的技术 主要技术 1.express框架 2.node.js 3.mongodb 文件夹 2. 项目功能 2.1 登录 创建用户集合,初始化用户 连接数据库 创建用户集合 初始化用户 为登录表单项设置请求地址、请求方式以及表单项name属性 当用户点击登录按钮时,客户端验证用户是否填写了登录表单 如果其中一项没有输入,阻止表单提交 服务器端接收请求参数,验证用户是否填写了登录表单 如果其中一项没有输入,为客户端做出响应,阻止程序向下执行 2.2 新增用户 为用户列表页面的新增用户按钮添加链接 添加一个连接对应的路由,在路由处理函数中渲染新增用户模板 为新增用户表单指定请求地址、请求方式、为表单项添加name属性 增加实现添加用户的功能路由 接收到客户端传递过来的请求参数 对请求参数的格式进行验证 验证当前要注册的邮箱地址是否已经注册过 对密码进行加密处理 将用户信息添加到数据库中 重定向页面到用户列表页面 2.3 数据翻页 当数据库中的数据非常多是,数据需要分批次显示,这时就需要用到数据分页功能。

AttributeError: module 'bcrypt' has no attribute 'hashpw' for python

与世无争的帅哥 提交于 2020-02-06 11:23:27
问题 I don't know what I'm doing wrong. Please help 回答1: I ran into this issue as well and went through these steps to figure it out: pip list double check that bcrypt is in that list python --version which returned Python 2.7.15rc1 python3 --version which returned Python 3.6.7 I had an issue where python3 doesn't recognize the bcrypt package: python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>

AttributeError: module 'bcrypt' has no attribute 'hashpw' for python

∥☆過路亽.° 提交于 2020-02-06 11:23:13
问题 I don't know what I'm doing wrong. Please help 回答1: I ran into this issue as well and went through these steps to figure it out: pip list double check that bcrypt is in that list python --version which returned Python 2.7.15rc1 python3 --version which returned Python 3.6.7 I had an issue where python3 doesn't recognize the bcrypt package: python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>

AttributeError: module 'bcrypt' has no attribute 'hashpw' for python

六眼飞鱼酱① 提交于 2020-02-06 11:22:37
问题 I don't know what I'm doing wrong. Please help 回答1: I ran into this issue as well and went through these steps to figure it out: pip list double check that bcrypt is in that list python --version which returned Python 2.7.15rc1 python3 --version which returned Python 3.6.7 I had an issue where python3 doesn't recognize the bcrypt package: python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>

bcrypt-nodejs compare method returns false every time

我们两清 提交于 2020-02-04 07:28:59
问题 I'm trying to make a login in for my app using mongoose, passport-local, and bcrypt-nodejs. The userSchema pre('save') function works fine and saves a hashed password. however the bcrypt compare method will return false every time. see bcrypt-nodejs here is my userSchema var userSchema = mongoose.Schema({ login:{ local:{ email: {type: String, unique: true, required: true}, password: {type: String, unique: true, required: true} } } userSchema.pre('save', function(next) { bcrypt.hash('user