加密算法

1、对称加密(symmetrcic encryption)

密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES等;
其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下: 密文 + 解密算法 + 私钥 => 明文

对称加密的算法是公开的,一旦被泄露,密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。对称加密主要问题是共享秘钥,解决这个问题的方案非对称秘钥。

特点
优点:算法公开、计算量小、加密速度快、加密效率高。
缺点:在数据传送前,发送方和接收方必须商定好密钥,然后双方保存好密钥。如果一方的密钥被泄露,那么加密信息也就不安全了
使用场景:本地数据加密、https 通信、网络传输等

AES
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。是一种对称加密算法也就是加密和解密用相同的密钥;

适用场景:
网站注册时,如果注册过程分两步进行,第一步校验手机号,校验通过后,跳转到其他界面,填写其他注册信息,完成注册。如果第三方通过伪造返回信息,可以欺骗前端,非法注册如果要解决非法注册的问题,那么需要前后端双重校验,前后端都需要涉及到加密和解密,所以可以使用AES加解密。

2、非对称加密

两个秘钥:公共秘钥和私有秘钥。任何人都可以获得公共秘钥,私有秘钥由服务器保存。
被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。这种密钥成对出现,加密解密使用不同密钥。
在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

特点
优点:非对称加密与对称加密相比其安全性更好
缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
使用场景:https 会话前期、CA 数字证书、信息加密、登录认证等

RSA
一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。在使用 RSA 进行加密和解密时需要一对公钥和私钥,公钥一般存储在前端,而私钥一般存储与后端;

3、哈希算法

将任意长度的信息转换为较短的固定长度的值,算法不可逆。这种转换是一种压缩映射,哈希值的空间通常远小于原值的空间,不同的输入可能会哈希成相同的输出。
简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
例如:MD5、SHA-1、SHA-2、SHA-256 等

特点
优点:不可逆、易计算、特征化
缺点:可能存在散列冲突
使用场景:文件或字符串一致性校验、数字签名、鉴权协议

对于简单的哈希算法的攻击方法主要有:寻找碰撞法和穷举法。所以,为了保证数据的安全,可以在哈希算法的基础上进一步的加密,常见的方法有:加盐、慢哈希、密钥哈希、XOR 等。

MD5(无解密方法,解密不可逆)
适用场景:
用户注册完成后,将加密后的密码发送给后端,后端将加密后的密码存储在数据库中,当用户登录时,前端依然发送加密后的密码,后台对比数据库中存储的密码和前端发送的密码。

当我们登录某个已注册网站时,在忘记密码的情况下需要重置密码,此时网站会给你发一个随机的密码或者一个邮箱激活链接,而不是将之前的密码发给你,这就是因为哈希算法是不可逆的。

4、Base64 编码

Base64 编码只是一种编码格式并不是加密算法,它可用于在 HTTP 环境下传递较长的标识信息。

特点
可以将任意的二进制数据进行 Base64 编码
数据加密之后,数据量会变大,变大 1/3 左右
编码后有个非常显著的特点,末尾有个=号
可进行反向解码
Base64 编码具有不可读性

5、数字签名

签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

对信息的摘要【通过hash算法/摘要算法/指纹算法计算的信息摘要/hash值】使用签名算法进行加密,得到的密文就叫做数字签名

6、数字证书

是互联网通信中的身份标识(主要是用户身份信息和公钥),一般由CA中心颁发,既CA认证中心,或第三方权威机构。数字证书上通常包括:CA的签名,证书所有人的公钥,CA中心的签名算法,指纹以及指纹算法,证书的唯一编号,版本,有效期等。

数字签名&数字证书

这里假设加密方式是MD5,将网站的信息加密后通过第三方机构的私钥再次进行加密,生成数字签名。

数字证书 = 网站信息 + 数字签名
在这里插入图片描述
假如中间人拦截后把服务器的公钥替换为自己的公钥,因为数字签名的存在,会导致客户端验证签名不匹配,这样就防止了中间人替换公钥的问题。

浏览器安装后会内置一些权威第三方认证机构的公钥,验证签名的时候直接就从本地拿到相应第三方机构的公钥,对私钥加密后的数字签名进行解密得到真正的签名,然后客户端利用签名生成规则进行签名生成,看两个签名是否匹配,如果匹配认证通过,不匹配则获取证书失败。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值