IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 编解码的学习和理解 -> 正文阅读

[数据结构与算法]编解码的学习和理解

编解码


日常工作中经常会遇到一些编码解码、加密解密相关的东西,虽然不需要知道怎么做的,但是如果对这些东西完全不懂的话,对于一些原理的理解还是有困难的。这里梳理一些自己常用到的关键点和一些浅显的解释。方便需要的时候随时查阅。

密码学

密码学起源于古典密码学:

  • 移位式
  • 替换式

现代密码学

  • 对称式加密
  • 非对称式加密

对称加密:

A使用密钥和加密算法进行加密,生成密文,B拿到密文后,使用解密算法和密钥进行解密。
算法:DES、AES

非对称加密:

A和B进行通信,A使用B的公钥进行加密,生成密文,B拿到密文后使用自己的私钥进行解密,反之亦然。
在非对称加密中,也可以使用私钥进行加密,然后使用公钥进行解密,这样就可以将非对称加密用在电子签名的场景中,使得签名无法伪造。自己使用私钥生成密文,别人使用公钥进行解密,如果解密后和签名对的上,说明非伪造。
算法:RSA、DSA
RSA可用于加密、解密和签名
DSA专门用于电子签名

编解码

先来一段百度百科的解释:
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。

Base64

Base64把二进制数据转化为使用64个字符表示的串。
64个字符为:

  • A-Z
  • z-z
  • 0-9
  • / +

二进制数据中每6位转化为一个字符。最终生成可以用0到63编号对应的字符表示的编码后的内容。
Base64能够让原始文件具有字符串所具有的特性。但是,在进行传输时,会增加数据的长度。即:在正常传输时,传输的时字符,对应8位,但是转化为Base64时,没6位生成一个字符。数据长了1/3。

URL encoding

将URL中的保留字符使用百分号“%”进行编码。
目的时消除歧义,避免解析错误。

书写URL时要使用US-ASCII字符集可以显示的字符。如果需要在URL中使用不属于此字符集的字符,就要使用特殊的符号对该字符进行编码。如:最常使用的空格用%20来表示,例如:http://www.google.com/new%20123.html。除了那些无法显示的字符外,还需要在URL中对那些保留(reserved)字符和不安全(unsafe)字符进行编码。

压缩与解压

压缩:把数据换一种方式来存储,目的是减少存储空间。
解压缩:对压缩后的数据进行还原,便于进行使用。
常见压缩算法:DEFLATE、JPEG、MP3

Hash

把任意数据转为指定大小范围的数据。一般用于摘要、数字指纹等。
算法: MD5、SHA1、SHA256
Hash在工作中通常用于

  1. 数据完成性验证
  2. 快速查找,主要是通过对hash表的使用来进行实现,基于hashcode和hashmap。

在登录过程中,通过使用md5算法来实现密码的转化。这样可以保护用户的隐私,但是使用彩虹表(即常用密码和md5结果的映射表)可以伪造用户登录。针对这种情况,可以使用加盐的方案进行破解。不同的网站由不同的盐,加盐后的md5结果和原始的MD5结果是不一样的,因此无法通过彩虹表进行破解。

那么Hash是一种编码方式吗?答案是否。原因是,编码需要是可逆的,可以通过解码进行还原。Hash显然做不到,因此Hash不属于编码。

类似:Hash和MD5也不算是加密。原因很简单:数据经过Hash和MD5转换后,大小发生了变化,通常时变小了,这是一个不可逆的过程。因此,他们都不属于加密。

字符集

字符集就是一个整数向现实世界转化的map

  1. ASCII
  2. ISO-8859-1
  3. unicode
    • utf-8 编码
    • utf-16 编码
  4. GBK/GB2312/GB18030

字符集中的编码就是按照字符对文本的不同表达方式。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:45:07  更:2021-10-30 12:46:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:04:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码