base加密(base加密解密php)

2023-02-22 7:27:40 摩斯密码知识 思思

Base64编码是加密算法吗?

大家好,我是阿萨。昨天和开发同学一起开会的时候。开发同学说到了用Base64编码,我立即说 不能使用Base64加密。然后开发来了一句Base64不是加密算法。当时懵了。默默记下这个知识点,回来学习下。

先给大家讲解下我为什么会有不能使用Base64加密的意识。很多年前,我遇到的第一个安全问题,就是敏感数据用Base64加密了。 事情起因是,我们接到一个bug,说有个敏感字段使用Base64在前端加密了,然后传给后端了。

基于之前的小故事,对于使用了Base64编码的地方就觉得不安全。这也是为什么会对开发说不能用Base64加密了,

今天我们就来学习下Base64编码。

一,Base64编码的由来。

传说,最开始互联网电子邮件都是英文的,后来互联网传到中国后,互联网电子邮件汉字就不认识了。所以就有了Base64编码,把中文变成可识别的英文。然后Base64编码被广泛用到各行各业。

以上只是传说。真实的由来,就不得而知了。

下面我们从计算机的底层传输过程中。它分为可见字符和不可见字符。可见字符比如我们熟知的ASCII码。

还有一些不可见的控制字符(0~31以及127),比如回车,换行等以及一些二进制数据都是不可见字符。

这些不可见字符在一些硬件,比如交换机,路由器以及网关等识别或者解析错误,导致错误发生,所以就有了Base64编码的市场。因此Base64产生了。

二,Base64 编码的原理

Base64编码就是要把不可见的字符转换成常见的64个字符的过程。

这64个字符是哪些呢?

那么它工作原理是啥呢?

1) 首先把整段传输内容全部划分成三个字节一组。这里就有了24bit了.

2) 然后把24bit 分成四组。每一组就有6bit

3)在6bit的最前面添加2个0,这样就有了8bit

4)把这8bit 转换成一个字节。查找上表中对应字符。所有其他分组内容按照这样的处理逻辑处理下。就得到了Base64的编码后字符。

注意,如果不够三字节,用0填到三字节,同时补充了多少个字节的0,末尾就添加就几个=。

分别图示下以上过程:

三个A

2个A,补充一个0

1个A,补充2个0

三,总结

Base64编码不是用来加密的,也不是加密算法。它只是用来编码的。切记不可用于加密。如果敏感信息用Base64编码加密了,赶紧提bug。

经过今天的学习,希望大家有所收获。

如果你喜欢今天的内容,欢迎点赞,关注。

如何对websocket进行base64加密

服务端生成Sec-WebSocket-Accept规则:服务端将客户端传递的key进行去除首尾空白,然后和一段固定的GUID(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)进行连接,连接后的结果使用SHA-1(160数位)进行哈希操作,对哈希后的字符串进行base64编码,即为Accept内容。

websocket本质就是一个创建连接后不断开的socket,当连接成功之后,客户端(浏览器)会自动向服务端发送消息,服务端接收之后,会对于该数据进行加密。

WebSocket是一种在单个TCP连接上进行全双工通信的协议。

2.哈希加密 & base64加密

一、哈希HASH

哈希(散列)函数  MD5 SHA1/256/512 HMAC

Hash的特点:

     1.算法是公开的

     2.对相同数据运算,得到的结果是一样的

     3.对不同数据运算,如MD5得到的结果是128位,32个字符的十六进制表示,没法逆运算

1.MD5加密

MD5加密的特点:

    不可逆运算

    对不同的数据加密的结果是定长的32位字符(不管文件多大都一样)

    对相同的数据加密,得到的结果是一样的(也就是复制)。

    抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.

    弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的.

    强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的

MD5 应用:

一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹。

那么问题来了,你觉得这个MD5加密安全吗?其实是不安全的,不信的话可以到这个网站试试:md5破解网站。可以说嗖地一下就破解了你的MD5加密!

2.SHA加密

    安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当让除了SHA1还有SHA256以及SHA512等。

二、base64加密

1.Base64说明

    描述:Base64可以成为密码学的基石,非常重要。

    特点:可以将任意的二进制数据进行Base64编码

    结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。

    65字符:A~Z a~z 0~9 + / =

    对文件进行base64编码后文件数据的变化:编码后的数据~=编码前数据的4/3,会大1/3左右。

2.命令行进行Base64编码和解码

    编码:base64 123.png -o 123.txt

    解码:base64 123.txt -o test.png -D

2.Base64编码原理

    1)将所有字符转化为ASCII码;

    2)将ASCII码转化为8位二进制;

    3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;

    4)统一在6位二进制前补两个0凑足8位;

    5)将补0后的二进制转为十进制;

    6)从Base64编码表获取十进制对应的Base64编码;

处理过程说明:

    a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。

    b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。

    c.不断进行,直到全部输入数据转换完成。

base加密(base加密解密php) 第1张