加密、签名、编解码与序列化
编码解码
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处理,变成摘要,然后进行签名,大大减小数据量
字符集
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 炎武的学习笔记!