因为最近的工作需要接触了一些和base64相关的代码,今天上网的时候仔细查了一下,顺便查了以前一直有听说没有研究的MD5校验,写一点心得.
base64实际上是一种简单的字符序列化,从字面上的意思来看就是以一种字符序列来记录原数据,每个字符含有6位数字,因此成为base64(2^6)
之所以使用6位数字主要原因在于26个英文字母大小写加上0~9已经有62个字符了,再加上"+"和"/"正好凑了64和字符,方便记录和传输.
传统的ASCII码使用的是7位字符,但ASCII中有很多字符是不可打印的,为了方便网络传输,使用base64更加便于读写以及复制黏贴.
另外base64也可以用于掩盖原始数据,使其变为暗文.
其编码和解码方式非常简单,将原有的8位字节序列3个一组,从高到低转化为4个6位字符,不够的字符补上"="字符用于填充.
字符序列化之后便于了传输,另一个问题就是传输的校验.之前我主要使用CRC校验数据,但对于数据量比较大的时候,CRC校验就存在了一定局限性
因此使用更高安全性的MD5算法校验是个不错的选择
CRC校验结果是32位的而MD5校验结果是128位的,及时很大的数据组合也能有效降低出错概率,经常用于密码和文件的校验
不过MD5的算法可不简单,反复的计算并不太适合速率比较低的单片机工作,因此在工业通讯中似乎很少见到使用,而对于通讯校验一般主要是防止误码
用MD5似乎有些大材小用了,所以考虑再三暂时还是使用CRC校验吧