编码、加密、Hash、序列化和字符集

移位式加密:可以定规则偏移几位。

替换式加密:

密钥:对照码表

加密算法:怎么替换成密文

解密算法:怎么替换成明文

对称加密

使用相同密钥,不同算法

原理:使用密钥和加密算法、使用密钥和解密算法

缺点:同一个密钥、建立加密通信前肯定要传输这个密钥,那么就容易泄漏。

经典算法:DES、AES

非对称加密

使用相同加密算法,只是密钥不同

原理:使用公钥加密、使用私钥解密,即自己持有公钥和私钥,但是公钥给对方用来加密的,私钥自己保管用来解密,即对方加密后也无法解密的,只有我自己有私钥才能解密。

(另外使用私钥加密,也是可以使用公钥解密的,即反着来也行,但是公钥是公开、私钥是保密的,正常是可以通过私钥计算出公钥的,所以不能反着来用)

经典算法:RAS、DSA

优点:可以在不安全的网络上传递你的公钥

缺点:计算太复杂、性能差点

数字签名

签名与验证:

这里对签名使用私钥加密,接收方再用公钥加密,就可以拿到签名和原始数据比较一致。别人不好伪造签名数据,因为不知道私钥,所以伪造的也就无法用公钥加密得到原始数据。这样就有了签名证明的作用。

中间人攻击: 不知道消息是否来自对方,还是中间人,此时进行签名验证,防止伪造,让你确认消息就是来自你要的那个人。

但是有个问题,上面传递了原数据,就是明文容易被偷窥,此时可以使用非对称加密这个原数据:

Base64

将二进制数据转换成由64个字符组成的字符串的编码算法(大小写字母52 + 数字10 + (+#))

原理:就是把原本一个字节中的按每6个bit编排,得到新的字符串。

用途:让原数据(比如图片)具有字符串所有的特性,可以传输、保存。

缺点:不安全、低效(因为6个bit当做一个字节了)

URL encoding

%百分号编码

将URL中的保留字符使用百分号进行编码

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

压缩和解压缩

压缩:减小存储空间

解压缩:还原,以便使用

序列化

把内存里对象,转换成字节序列的过程

反序列化:字节序列转成内存对象

Hash:不可逆运算得到,(不算是加密算法)

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

作用:摘要、数字指纹

经典算法:MD5散列算法、SHA1

实际用途:数据完整性验证、快速查找(hashCode()、hashMap)、隐私保护(密码)

为什么重写了equals方法,就要重写hashCode方法?

hashMap的key,是比较hashCode来判断唯一的。因为计算hashCode比equals快速匹配、性能好、粗略,如果hashCode相等,再比较equals。

如果equals比较相等,那hashCode一定相等,反之不一定。

彩虹表:对于常用的密码的对应hash表,容易被破解

此时可以给原始密码加盐、比如末尾固定加个33,那么算出来的hash值就不好在彩虹表中查找到。但是这个盐一般也比较复杂,这样也不会容易被破解。

对非对称加密的签名验证的完整版:先进行hash(减小数据大小)得到摘要,对hash值进行加密,得到签名后的摘要。这样全程得不到明文,不易泄漏。

字符集(一个数字和文字符号的Map)

含义:一个由整数向现实世界中的文字符号的Map,最熟悉的就是ASCII字符集

注意UTF-8和16都是Unicode字符集下面的两个不同编码规则的分支,比如数字01的不同缩写方式

相关推荐
qq_4195630916 分钟前
ToT 的 BFS/DFS 有个致命缺口:蒙特卡洛树搜索(MCTS)用「随机试错+统计」让大模型想得更深,小模型 + 它竟超过 GPT-4
算法·深度优先·宽度优先
万法若空1 小时前
CSP-J/S 排序算法完整专题训练题单
数据结构·算法·排序算法
凉茶钱1 小时前
【数据结构】排序(快排,选择,直接插入,希尔)
数据结构·算法·排序算法
weixin_446260851 小时前
拆解再复用:大模型智能体的跨任务技能迁移
人工智能·深度学习·算法
Brilliantwxx2 小时前
【Linux】 进程(4)七大进程状态深度解析
linux·运维·算法
nvd112 小时前
LiteLLM 与 Redis 响应缓存机制:从精确哈希匹配到模型底层 KV-Cache 边界
redis·缓存·哈希算法
青少儿编程课堂2 小时前
用图形化编程做一个“少年探险闯关”小游戏:方向键控制、碰撞检测与多关卡串起完整项目
c++·python·算法·bfs·信息学竞赛
CQU_JIAKE2 小时前
8.22【A】
算法
大熊背3 小时前
ISP图像处理中大数乘法溢出处理(一)
人工智能·python·算法·溢出处理
wabs6664 小时前
关于栈【力扣1047. 删除字符串中的所有相邻重复项的思考】
数据结构·c++·算法·leetcode··代码随想录