加解密算法及国密算法应用

在这里插入图片描述
常见的加解密算法可以分为可逆和不可逆两种

不可逆算法

哈希算法,MD5,hs-256,SM3

一般系统中使用密码加密和数据防篡改校验字段就是不可逆算法

hs-256应用:JWT

header头部+payload荷载+signature签名(防止篡改)
前两部分采用base64进行编码,签名使用hs256进行加密

头部(Header)

{"typ":"JWT","alg":"HS256"}

在头部指明了签名算法是 HS256 算法。

经过 Base64 编码得到:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9(第一部分)

载荷(playload)

载荷就是存放有效信息的地方。

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

然后对有效负载进行 Base64Url 编码以形成 JSON Web 令牌的第二部分eyJpZCI6IjEyMzQ1NiIsIm5hbWUiOiJNb29ubGlnaHRMIiwic2V4IjoibWFsZSJ9(第二部分)。

请注意,对于签名令牌,此信息虽然受到篡改保护,但任何人都可以读取。不要将机密信息放在 JWT 的有效负载或标头元素中,除非它已加密。

签证(signature)

jwt的第三部分是一个签证信息。这个部分需要 Base64 加密后的 header 和 Base64 加密后的 payload 使用 “.” 连接组成的字符串,然后通过 header 中声明的加密方式进行加盐 secret 组合加密,然后就构成了 jwt 的第三部分。

即将 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEyMzQ1NiIsIm5hbWUiOiJNb29ubGlnaHRMIiwic2V4IjoibWFsZSJ9 进行 HS256 算法加密(header 定义的)得到:

e5dda3f17226c1c6ca7435cd17f83ec0c74d62bd8e8386e1a178cd970737f09f(第三部分)。

最后,我们将上述的 3 个部分的字符串通过 “.” 进行拼接得到 JWT:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEyMzQ1NiIsIm5hbWUiOiJNb29ubGlnaHRMIiwic2V4IjoibWFsZSJ9.e5dda3f17226c1c6ca7435cd17f83ec0c74d62bd8e8386e1a178cd970737f09f

在实际开发中,用户登录成功后,后端生成 jwt 返回给前端,之后,前端与后端交互时携带 jwt 让后端验证 jwt 的合法性。

可逆算法

对称加密

DES、3DES、AES(主流),SM1,SM4

适用于无需进行密钥交换的场景

1如内部系统,事先就可以直接确定密钥
2.防止明文传输数据被窃取的
3.加解密速度快,适合数据内容比较大的加密场景

非对称加密

RSA、DSA、SM2

适用于需要密钥交换的场景

如互联网应用,无法事先约定密钥,这时与对称加密算法结合。利用非对称加密算法安全性较好的特点,传递对称加密算法的密钥。利用对称加密算法加解密速度快的特点,进行数据内容比较大的加密场景的加密。如HTTPS

应用:数字签名,数字证书,ssl

国密算法应用

基本上SM2、SM3、SM4都会同时使用。一般都是用SM4对数据内容加密,使用SM3,对内容进行摘要,再使用SM2,对摘要进行签名。这个是数据发送端做的事情。接收端,先用SM2,对摘要进行验签,验签成功后,就做到了防抵赖(验证对方身份和数据的真实性),对发送过来的内容进行SM3摘要,看下生成的摘要和验签后的摘要是否一致,用于防篡改。SM4对称加密比较快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值