robocky

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

因为最近的工作需要接触了一些和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校验吧

posted on 2012-02-16 21:44  robocky  阅读(805)  评论(0编辑  收藏  举报