当前位置: 首页 > news >正文

企业北京响应式网站制作企业网站设计思路

企业北京响应式网站制作,企业网站设计思路,网络公司实习报告,外网代理服务器网站目录 一、问题 二、密码加密 1、MD5密码加密 2、BCryptPasswordEncoder加密(推荐) 2.1 特点 2.2 使用步骤 一、问题 在数据库表中的密码都是明文存储的,安全性太低 需求: 将密码加密后存储,提高安全性 二、密码加密…

目录

一、问题

二、密码加密

1、MD5密码加密

2、BCryptPasswordEncoder加密(推荐)

2.1 特点

2.2 使用步骤


一、问题

在数据库表中的密码都是明文存储的,安全性太低

需求:

将密码加密后存储,提高安全性

二、密码加密

1、MD5密码加密

MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。

功能:

输入任意长度的信息,经过处理,输出为128位的信息
不同的输入得到的不同的结果,结果与输入都是一一对应的

可以使用Spring提供给我们的工具类DigestUtils的md5DigestAsHex方法

        //密码比对(使用MD5加密)//对前端传过来的明文密码进行MD5加密处理password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}

2011年后MD5加密算法可以被反推出来明文,被破解,已经不推荐使用

2、BCryptPasswordEncoder加密(推荐)

BCrypt 是一种密码散列函数,即单向函数。且每次加密过后的值都不一样!

2.1 特点

加密

注册用户时,使用SHA-256+随机盐+密钥把用户输入的密码进行hash处理,得到密码的hash值,然后将其存入数据库中。

密码匹配

用户登录时,密码匹配阶段并没有进行密码解密(因为密码经过Hash处理,是不可逆的),而是使用相同的算法把用户输入的密码进行hash处理,得到密码的hash值,然后将其与从数据库中查询到的密码hash值进行比较。如果两者相同,说明用户输入的密码正确

2.2 使用步骤

导入依赖(仓库地址Maven Repository: org.springframework.security » spring-security-crypto (mvnrepository.com))

<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId><version>6.2.1</version>
</dependency>

添加加密器

在 SpringBoot 项目的配置文件中添加如下代码,用于注入 BCryptPasswordEncoder 加密器

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;@Configuration
public class PasswordEncoderConfiguration {@Beanpublic BCryptPasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder();}
}

验证密码

在需要验证密码的地方,通过@Autowired注解注入密码加密器,然后使用 BCryptPasswordEncoder 的 matches 方法进行匹配

    @Autowiredprivate BCryptPasswordEncoder passwordEncoder;// 使用BCryptPasswordEncoder
// 密码比对
if (!passwordEncoder.matches(password,employee.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
}

加密方法:用于更改密码时将用户输入的明文密码进行加密  

encode(明文密码)

匹配方法:用于比较输入的密码加密后与数据库中已加密的密码进行比对  

matches(用户输入的未加密的密码,数据库中已加密的密码)

源码:

    public String encode(CharSequence rawPassword) {if (rawPassword == null) {throw new IllegalArgumentException("rawPassword cannot be null");} else {String salt = this.getSalt();return BCrypt.hashpw(rawPassword.toString(), salt);}}public boolean matches(CharSequence rawPassword, String encodedPassword) {if (rawPassword == null) {throw new IllegalArgumentException("rawPassword cannot be null");} else if (encodedPassword != null && encodedPassword.length() != 0) {if (!this.BCRYPT_PATTERN.matcher(encodedPassword).matches()) {this.logger.warn("Encoded password does not look like BCrypt");return false;} else {return BCrypt.checkpw(rawPassword.toString(), encodedPassword);}} else {this.logger.warn("Empty encoded password");return false;}}

http://www.yidumall.com/news/43033.html

相关文章:

  • 全国工商企业注册信息查询系统seo外链发布
  • 没有网站如何做cpa舆情监测
  • 建微网站需要购买官网主机吗网站快速排名公司
  • 网站添加icp信息小程序推广运营的公司
  • 东莞网站建设市场企业营销模式
  • 罗定微网站建设seo云优化软件破解版
  • 手机网站建设的公司排名seo怎么学
  • 网站建设进度规划口碑营销的名词解释
  • 丽江手机网站建设百度收录网站
  • 建筑类电商网站线上推广软件
  • 做网站要法人身份证吗google浏览器官方
  • 网站建设哪种语言好智慧软文网站
  • 网站编程是什么意思seo网络推广企业
  • 网站建设中国十强百度小说排行榜2019
  • 建网站中企动力做专业搜索引擎优化
  • 建设网站方法有哪些内容广东网络优化推广
  • 做宣传图册在什么网站上海知名网站制作公司
  • 河南网站建设公司哪个好呀天津百度推广网络科技公司
  • 什么是网络营销网络营销有哪些内容百度快照优化排名怎么做
  • css3网站导航推广seo优化公司
  • 空包网站建设东莞营销网站建设优化
  • 中国重点城镇建设集团网站中国工商业联合会
  • wordpress外贸建站主题百度推广怎么找客户
  • 海外做淘宝网站品牌宣传有哪些途径
  • 做自己的网站有什么用ks刷粉网站推广马上刷
  • 做展示型企业网站线上推广平台报价
  • 沭阳网站建设招聘小红书广告投放平台
  • 海南在线人才网招聘信息seo关键词搜索优化
  • 网站制作顶级公司营销策划方案模板
  • 昌平哪有做网站的公司开发一个网站需要多少钱