12.11-12.15 一周总结

第一次课

nginx --------   一个轻量级代理服务器

       反向代理

                

       负载均衡

第二次课 

  1. 对称式加密

    1. AES
      1. 常见的算法之一,其中使用128位、192位或256位密钥来加密信息
    2. DES
      1. 同理,但是安全性不高背后来的3DES代替但依旧不高
  2. 非对称加密

    1. RSA
    2. ECC
  3. md5加密

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

    1. 对称和非对称加密的对比
      1. 对称密码体制是一种传统密码体制 ,又称为单密钥密码体制或秘密密钥密码体制。如果一个密码体制的加密密钥和解密密钥相同 ,或者虽然不相同 ,但是由其中的任意一个可以很容易地推导出另一个 ,则该密码体制便称为对称密钥密码体制。
      2. 其特点为 :一是加密密钥和解密密钥相同 ,或本质上相同 ;二是密钥必须严格保密。这就意味着密码通信系统的安全完全依赖于密钥的保密。通信双方的信息加密以后可以在一个不安全的信道上传输 ,但通信双方传递密钥时必须提供一个安全可靠的信道而非对称密码体制与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。

      3. 而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
    2. md5不可以被反推出密码 

第三次课

1 什么是jwt

                JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用 JSON 对象在各方之间安全地传输信息。此信息是经过数字签名的,因此可以验证和信任。(一个登陆后保持状态的工具)

2 jwt的工作步骤

  利用 Token 进行登录验证的步骤:

  1. 用户输入账号密码点击登录
  2. 后台收到账号密码,验证是否合法用户
  3. 后台验证是合法用户,生成一个 Token返回给用户
  4. 用户收到该 Token 并将其保存在每次请求的请求头中
  5. 后台每次收到请求都去查询请求头中是否含有正确的 Token,只有 Token 验证通过才会返回请求的资源。

3 jwt的结构

          HeaderPayloadSignature  三部分组成

  Header:

        JWT Header 由两部分组成,是一个描述 JWT 元数据的JSON对象,alg 属性表示签名使用的算法,默认为 HMAC SHA256(写为HS256);typ 属性表示 Token 的类型,统一写为 JWT。最后,使用 Base64 URL 算法将上述 JSON 对象转换为字符串保存

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

        payload 是 JWT 的主体部分,保存实体(通常是用户)信息,每一个字段就是一个 claim(声明),JWT 为我们提供了一些默认字段

iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID用于标识该JWT

还有自定义的私有字段用来保存用户信息

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

注意: payload 字段会使用 BaseUrl 编码成字符串组成 JWT 的第二个部分

Signature:

签名部分是对上面两部分数据签名,需要使用 base64 编码后的 header 和 payload 数据,通过指定的算法生成哈希,以确保数据不会被篡改。首先,需要指定一个密钥(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。然后,使用header中指定的签名算法(默认情况下为 HMAC SHA256)根据以下公式生成签名:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)
注意事项:
  1. Header 和 Payload 只是简单的利用 Base64 编码,是可逆的,因此不要在 Payload 中存储敏感信息 
  2. Signature 使用的是不可逆的加密算法,无法解码出原文,它的作用是校验 Token 有没有被篡改。该算法需要我们自己指定一个密钥,这个密钥存储在服务端,不能泄露
  3. 尽量避免在 JWT 中存储大量信息,因为一些服务器接收的 HTTP 请求头最大不超过 8KB

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值