加密算法和编码笔记

121 阅读2分钟
对称加密:
  • 原理:使用密钥何加密算法对数据进行转换,得到的无意义数据即为密文;使用密钥和解密算法对密文进行逆向转换,得到数据。
  • 经典算法:DES(密钥56位,密钥太短已经被淘汰)、AES(主流算法)
非对称加密
  • 原理:使用公钥对数据进行加密得到密文;使用私钥对数据进行解密得到原数据
  • 延伸用途:数字签名。
  • 经典算法:RSA、DSA

微信截图_20220519234152.png

密码学密钥和登录密码

  • 密钥(key)
    • 场景:用于加密和解密
    • 目的:保证数据被盗时不会被读懂内容
    • 焦点:数据
  • 登录密码(password)
    • 场景:用户进入网站或游戏前的身份验证
    • 目的:数据提供方或应用服务方对账户拥有者数据的保护,保证[你是你]的时候才提供权限
    • 焦点:身份
Base64编码
  • 将二进制数据转换成由64个字符组成的字符串的编码算法
  • 什么是二进制数据?
    • 二进制数据就是由010101组成
  • 用途:
    • 让原数据具有字符串所具有的特性,如可以放在URL中传输、可以保存到文本文件、可以通过普通的聊天软件进行传输。
    • 把原本人眼可以读懂的字符串编程读不懂的字符串,降低偷窥风险
  • [Base54加密传输图片,可以更加安全和高效],真的吗?
    • 否,Base64并非加密算法,不能说安全,高效就更加谈不上了,因为每次Base64后数据会增大三分之一
URL Encoding
  • 将URL中的保留字符串使用百分号“%”进行编码
  • 目的:消除歧义,避免解析错误
压缩与解压缩
  • 压缩:把数据换一种方式来存储,以减少存储空间
  • 解压缩:把压缩后的数据还原成原先的形式,以便使用
  • 常见压缩算法:DEFLATE、JPEG、MP3
序列化
  • 序列化:把数据对象(一般是内存中的,例如JVM中的对象)转换成字节序列的过程
  • 反序列化:把字节序列重新转换成内存中的对象
  • 目的:让内存中的对象可以被存储和传输
  • 序列化是编码吗?
    • 序列化不是编码,并没有把一种格式转换成另外一种格式
Hash
  • 定义:把任意数据转换成指定大小范围(通常很小)的数据
  • 作用:摘要、数字指纹
  • 经典算法:MD5、SHA1、SHA256等
  • 用途:
    • 数据完整性验证
    • 快速查找:hashCode() 和 HashMap
    • 隐私保护
  • Hash是编码吗?
    • 否,Hash是不可逆的,不属于编码
  • Hash是加密吗?据说MD5是[不可逆加密]?
    • 否,Hash不是加密,MD5也不是加密,都是不可逆的