Security的加密方式讲解与实例说明
树图思维导图提供 Spring-Security密码加密脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Spring-Security密码加密脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:55921f81a06925e5199e256221aebd00
Spring-Security02 密码加密思维导图模板大纲
公钥
公钥加密
私钥
密钥解密
安全度高,但效率低
非对称加密是指 加密 和解密 使用的 不是同一个密钥的 加密方式
解密方 生成一对 公私钥,自己保留私钥,把公钥公开,
加密方拿到公钥对明文加密,把密文发送给揭密方
,揭密方使用四私钥对密文解密,得到明文
反 正也是用来加密的、又不是用来解密的——即就算被截获了也不怕,只要 保管好私钥就可以了
常用的非对称加密方式为:RSA
Bcrypt——单项hash算法
Slat:加盐
使用随机盐:防止被彩虹表攻破
cost
cost:指定hash的次数,cost是一个2的指数
即将salt随机并混入最终加密后的密码,验证时也无需单独提供之前的salt,从而无需单独处理salt问题
Bcrypt的优缺点
优点
安全性高
灵活性强
易于使用
缺点
运行速度较慢
不可逆
旦密码被哈希后,就无法再次获取明文密码
只有一个密钥
客户端,服务端 都是密钥加密,解密
安全行低,但传输效率高
加密和解密 使用的是 同一个密钥 的加密方式
常用的对称加密方式为:3DES、AES、DES
单项哈希算法
无法通过计算还原出原始密码,但是可以建立彩虹表 进行查表破解
不可以解密
MD5,SHA1
其实一点都不安全,反而更容易被解密
bcrype
在springmvc中开启spring的注解支持
对于处了controller提供ioc,di,aop注解支持
<!--配置springmvc的注解驱动支持,controller包扫描操作-->
<!--配置springmvc的注解驱动支持,controller包扫描操作--> controller等等
<!-- 配置springSecurity注解权限控制支持 -->
<security:global-method-security pre-post-annotations="enabled"/> <bean id="userService" class="com.lanou.service.UserService"/> <bean id="securityController" class="com.lanou.controller.SecurityController"/>
首先在springmvc.xml中配置资源访问权限设置
注解
@PreAuthorize
@PreAuthorize("hasAuthority('add')")
有对应的权限
@PreAuthorize("hasRole('ROLE_ADMIN')")
有对应的角色才能访问
<!-- 2.3自定义退出
<!-- 构建密码加密对象 -->
必须实现UserDetailService接口
implements UserDetailsService
给密码加密
u1.setPassword(bCryptPasswordEncoder.encode("admin"));
org.springframework.security.core.userdetails.User userDetails = new org.springframework.security.core.userdetails.User(user.getUserName(),user.getPassword(),list);