加密

加密

一.对称加密

特点:
	加密和解密使用同一个秘钥
存在的问题
	加密解密用同一个密钥,被黑客拦截知道密钥后安全丧失

二.非对称加密

特点:
	加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密
	公钥可以公开给别人进行加密,私钥永远在自己手里,非常安全,黑客拦截也没用,因为私钥未公开
	
存在的问题:
	相比于对称加密,速度会比较慢一些

2.1 简单原理

公钥加密的数据无法使用公钥反推出来,例如

A告诉B,公钥是3233,17

假设B要传的数据是44

那么根据公式计算

加密

B就把678这个数字传给A

上面说了,反着推是推不出来的

那A怎么解密呢?A自己还有一个密匙2753,用自己的密匙算一下就知道了

加密

那为什么公钥加密的信息可以通过私钥解密?为什么公钥加密很难反推出来?这个我就不知道了,我对这方面也没什么兴趣,感兴趣的可以找一些大学公开课看看

2.2实际应用

此时还有一个问题,那就是

假如A与B进行通信,A持有私钥,B持有公钥

存在一个黑客C,可以截获到AB之间发送的任何信息

那么C就可以知道B所持有的公钥,从而知道A发送给B的任何信息

也就是B->A的信息他无法破解

​ 但A->B的信息他都能知道

这样一来加密似乎没什么意义

那么在实际的生产生活中解决方法是,使用非对称传递对称加密密钥,然后使用对称加密传递消息

(1) A需要在银行的网站做一笔交易,他的浏览器首先生成了一个对称密钥

(2) A的浏览器向银行的服务器请求非对称加密公钥

(3) 银行系统自动生成一对非对称密钥,然后将其中的公钥发送给A

(4) A的浏览器使用银行发来的公钥将自己之前生成的对称密钥加密

(5) A的浏览器将加密后的对称密钥发送给银行

(6) 银行使用私钥解密得到A发来的对称密钥

(7) 之后,A与银行使用对称密钥进行通信

三.hash散列

根据key值和hash函数计算得到一个计算结果,我们希望能够达到的结果是

严格来说不算是加密

Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成特定长度且唯一的Hash值,但不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等

MD5

简介

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

特点

1、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
2、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。(不可逆)
3、压缩性:任意长度的数据,算出的MD5值长度都是固定的128bit
4、容易计算:从原数据计算出MD5值很容易。

bcrypt

依赖

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>

代码

public class BcryptTest {
    public static void main(String[] args) {
        //用户密码
        String password = "123456";
        //密码加密
        BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
        //加密
        String newPassword = passwordEncoder.encode(password);
        System.out.println("加密密码为:"+newPassword);
        //对比这两个密码是否是同一个密码
        boolean matches = passwordEncoder.matches(password, newPassword);
        System.out.println("两个密码一致:"+matches);
    }
}
上一篇:抖音协议点赞、评论、直播弹幕加密算法研究分析1


下一篇:SSM 框架搭建 sckill 秒杀系统 —— step.3 业务逻辑层建设