编码解码

Base64

二进制数据转为64个字符组成的字符串的算法

二进制:广义为任何计算机数据,狭义为非文本数据,如文件,图片等

传图片,会增大三分之一

Base58,比特币用,去掉了码表里的一些符号,方便手抄与复制

URL encoding

url中的保留字符用%替代,消除歧义,避免解析错误

加密解密

对称加密

AES 64位秘钥 DES 128位秘钥 加密解密算法不同

非对称加密

RSA 可以加密和签名 DSA 只用于签名,速度快

公钥加密 私钥解密 加密解密算法相同 110 554 110

私钥加密的话,公钥也可以解密

公钥一般是通过私钥计算出来,所以不能暴露私钥进行加密

椭圆曲线算法

数字签名

原数据 -私钥签名-> 签名数据 -公钥验证-> 原数据

私钥就像一个印章,公钥验证完成后,首先得到了原数据相当于文件,而验证的过程就相当于文件上的印章

实际使用过程中,每次都要解密太麻烦,所以会一同发送原数据与签名数据,方便比对

压缩与解压缩

压缩:把数据换一种形式来存储,以节省控件

解压缩:还原

压缩算法:DEFLATE JPEG MP3

压缩也算编码,比较宽泛的问题

有损压缩因为不可逆,所以不太算编码

序列化

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

因为数据在内存中不存在格式,所以不算编码

哈希

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

作用:摘要,数字指纹

经典算法:MD5,SHA1,SHA256

实际用途:

  • 数据完整性校验
  • 快速查找:hashCode和hashMap存储对象时比对的是hashCode,这样效率高
  • 隐私保护

不算加密也不算编码

运用在签名与验证流程中,会把原数据做hash处理,变成摘要,然后进行签名,大大减小数据量

字符集