古代密码学

  • 移位式加密:密码棒

现代密码学

  • 对称密码学

    原理 使用密钥和加密算法对数据进行转换,使用密钥和解密算法对密文进行逆向转换,得到原数据

    image-20211223125822819

    经典算法:DES,AES

  • 非对称加密

    使用公钥对数据加密得到密文,使用私钥对密文解密得到元数据

    image-20211223130139500

    image-20211223130726713

    image-20211223130744518

    延伸用途:数字签名

    • 公钥能不能解私钥?

      可以互解

    • 签名与验证

      image-20211223131812221

      image-20211223192905810

  • 经典算法:RSA(签名/加密),DSA(特殊优化只用来签名)

  • 缺点:性能不行,因为需要设计算法实现公钥秘钥解出来的数据一样

image-20211223202631513

密码学密钥和登录密码

密钥(key)钥匙

  • 场景用于加密和解密
  • 目的:保护数据被盗时不会被人读懂内容
  • 焦点:数据

登录密码(password)通行口令

  • 场景:用户进入网站和游戏前的身份验证
  • 目的:数据提供方或服务方对账户拥有者数据的保护
  • 焦点:身份

Base64

将二进制数据转换为由64个字符组成的字符串的编码算法

Base64加密传输图片,可以更安全和高效么,真的么?

变种base58

URL encoding

将url中的保留字符使用百分号 “%” 进行编码

目的:消除歧义,避免解析错误

Http://www.baidu.com/user?name=自由&飞翔

http://www.baidu.com/user?name=自由%26飞翔

压缩和解压缩

压缩:把数据换一种方式来存储,以减少存储空间

解压缩:把压缩后的数据还原成原先的形式

常见压缩算法:DEFLATE、JPEG、MP3

压缩属于编码么?

编码到底是什么意思

压缩属于么

媒体数据的压缩编码

  • 什么是图片 音频、视频的编解码?
  • 图片的编码:把图像数据写成JPG、PNG等文件的编码格式
  • 图片的解码:把JPG、PNG等文件中的数据解析成标准的图像数据
  • 音频、视频的编解码

序列化

把数据对象(一般是内存中的,例如jvm中的对象)转换为字节序列的过程

反序列化:把字节序列重新转换为内存中的对象

目的:让内存中的对象可以被存储和传输

序列化是编码么?

Hash

把任意数据转换为制定大小范围(通常很小)的数据

作用:摘要,数字指纹

经典算法:MD5、SHA1、SHA256等

实际用途:

  • 数据完整性验证
  • 快速查找:hashCode()可以快速验证两个数据大致是否不同,但不够精准。HashMap
  • 隐私保护 明文密码hash 彩虹表 带盐hash

Hash是编码么?

Hash是加密么

字符集

含义:一个由整数向现实世界中的文字符号的map

分支:

  • ASCII:128个字符,1字节
  • ISO-8859-1:对ASCII进行扩充,1字节
  • Unicode: 13w个字符,多字节
    • UTF-8:Unicode的编码分支
    • UTF-16:Unicode的编码分支
  • GBK /GB2312/GB1830