从我混论坛到现在这么久了,大家也都问过很多很多为什么。
不过一直以来,好像有一个问题是亘古不变的:
xxxxx,这是什么加密呀?
一般xxxxx,看起来就是base64。
其实吧,对这种问题忍了很久了……其实……
xxxxx他娘的就是base64呀!!
那有人问了,但为毛解开是乱码啊??
因为,因为,因为是加过密的,所以是乱码啊!!
这回到本源,有两个问题我们一定搞清楚:
1.加密是什么?
2.base64存在的意义是什么?
首先,加密顾名思义,就是把我们能看懂的数据,加密成我们看不懂的数据。
也就是说,一个密码,可能只有大小写字母和数字,但经过AES或TEA加密过后,就可以是0~255中任意一个字符了。
那很大几率就是一个我们“认不得”的字符,比如xa3,你知道是啥字符么?
这也就是我们俗称的乱码。这样的字符,在很多设备上是看不清也分不清,也不适合在HTTP等各种协议中发送的。
于是,有人创造了base64编码。这个编码的意义就在于,他可以将0~255里任意字符,通过某算法编码成一个“可见字符”,也就是“大小写字母”、“数字”、“+”、“/”。
所以,我们可以一个图片,直接编码成一串base64。
说到这里应该说明白了吧……
因为加密后的字符串中含有很多不可见字符,所以我们有几种解决方案:
1.base64编码
2.hex编码(md5实际上就是这样处理的)
所以,你们问的xxxxx,95%是某种加密完之后,用base64编码一遍再存入数据库的。
所以……以后别拿来一个base64编码后的字符串,来问这是什么加密了。光一个字符串,怎么可能看出是什么加密??至少提供一点其他信息吧……
本文始发于微信公众号(代码审计):我还是科普一下“加密”之类的问题吧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论