• Base64、AES、MD5的区别与应用


    最近有个加密的需求,想起以前做过的验签、加密等内容,就一起总结一下吧,具体的技术细节就不展开了,我们只讨论核心以及如何应用

    Base64

    一句话解释就是用来将二进制数据进行文本化显示的编码方式

    想了解base64就一定要先了解什么是字符集

    字符集是由a-z,A-Z,0-9以及+/一共64个常见字符组成的,2*6=64(其实还有一个=号用于位不足时补位用,所以base64常见都是以=结尾)

    通常一个字符8bit,则3个字符需要24bit;base64则使用6bit表示一个字符,24bit表示4个字符。

    那么一串二进制数据或从文本获取字节数据后,无论原始字符串是什么,都可以使用base64将二进制数据用常见的字符组成一段可显示的文本。但由于每个字符bit变少,所以编码后文本会变长,可能会需要更大的带宽。

    网上都在说如图片、邮件都在使用base64传输,其实还有一个场景就是加密数据的传输

    比如AES加密返回的是byte[],如果使用new String()转换成字符串的话,那么发送接收双方则需要商定好编码格式,否则接收方不知道是UTF-8还是GBK可能导致数据无法还原。同时由于bit位更多加密后原始字符串存在更多不常见字符对开发不够友好。但是使用base64则不存在指定编码格式以及不常见字符问题。但注意文本变长导致的增加带宽问题

    由于base64只是编码格式无法保证信息安全,不能用于加密。同样的他性能也更好

    AES

    aes是一种常用的对称加密算法,专门用于数据安全。AES秘钥支持128、256位不同长度,秘钥越长安全性越高但加解密速度越低

    既然有对称加密那么也就有不对称加密,相对来说对称加密通常加解密速度会更快一些。适用于双方可以安全的交换保存秘钥的场景;而非对称加密则更多应用于无法安全交换秘钥的场景,比如HTTPS获取证书

    MD5

    也叫摘要算法,通过hash算法计算出一个固定长度的hash值,且过程不可逆。也就是无法通过MD5还原数据。现在有些黑客或者网站会通过彩虹表的方式记录大量hash后的数据反向破解原始数据。同时由于使用hash算法,就存在不同原始值的hash值一样的hash冲突问题。所以也不能通过MD5判断数据是否相等

    但由于MD5的定长,以及不可逆,我们一般用于像支付报文验签,防止请求遭遇中间人攻击篡改报文此类问题

  • 相关阅读:
    MyBatis-Plus分页插件和使用Mapper文件
    [论文笔记]SiameseNet
    手撕Vue-实现事件相关指令
    一行log日志,结果引发了P1的线上事故!
    Redis 面试题
    ChatGPT桌面客户端支持gpt4模型,附使用说明
    五分钟带你了解Python基础知识【精华】
    【JAVA版本】websocket获取B站直播弹幕——基于直播开放平台
    DBA面试题:MySQL缓存池LRU算法做了哪些改进?
    Linux(Centos)防火墙允许通过端口增加操作记录
  • 原文地址:https://blog.csdn.net/qq_34083066/article/details/133139609