|
本帖最后由 lxl1638 于 2011-5-8 16:19 编辑
学编程语言少不了研究算法,各人都会有自己的体会,
BASE64编码/解码算法简单是初学者很好的示例。
BASE64编码的原理是将3个8位二进制数值(共24位)拆分成4个6位二进制数值,可用下面过程表示(A、B、C表示二进制的1或0):
AAAAAAAA BBBBBBBB CCCCCCCC 三个数拆分成
AAAAAA AABBBB BBBBCC CCCCCC
解码过程正好相反,即将4个8位二进制(均小于0x3F,高二位均为0,只有低6位有效)的数据合成3个8位二进制数值。
很多传统的算法都是一个字节一个字节地操作,而Win32系统默认的数据类型是32位,刚好是4个8位二进制(32位),如果是4个8位二进制(即Win32系统的DWORD或UINT32数据)一次性读取,整体通过移位的方法可提高编码和解码的速度,本源码就是利用该方法实现BASE64编码的变异与提速,提速不是关键,变异才是关键,本人在另一工具中要用到BASE64编码,为了防止简单的破解,使用了BASE64变异算法。
源码中有变异算法的简单注释。
|
评分
-
查看全部评分
|