首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> V B 专区 -> 文章内容 退出登录 用户管理
投票调查
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· kalman filter 卡尔...
· Windows2000终端服务...
相关文章
· 如何使用API收发邮件...
· 经典加密算法在VB中...
· Unify the Role-Bas...
· 同时访问SQL SERVER...
base64编码和解码
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:43:29  发布人:Polaris

减小字体 增大字体

一般大多数包含"="的不是"Base64"编码格式,只有"quoted-printable"编码格式才会经
常出现"="虽然都是MIME编码,但是算法不一样
,"quoted-printable"的我不太清楚.讲一下Base64的吧.

Base64算法是把3个8位字符(24)转换成4个6位字符(32),因此编码后的长度会扩大1/3,
进行编码转换时需要用到一张Base64的编码表:
                            Table 1: The Base64 Alphabet

      Value Encoding  Value Encoding  Value Encoding  Value Encoding
           0 A            17 R            34 i            51 z
           1 B            18 S            35 j            52 0
           2 C            19 T            36 k            53 1
           3 D            20 U            37 l            54 2
           4 E            21 V            38 m            55 3
           5 F            22 W            39 n            56 4
           6 G            23 X            40 o            57 5
           7 H            24 Y            41 p            58 6
           8 I            25 Z            42 q            59 7
           9 J            26 a            43 r            60 8
          10 K            27 b            44 s            61 9
          11 L            28 c            45 t            62 +
          12 M            29 d            46 u            63 /
          13 N            30 e            47 v
          14 O            31 f            48 w         (pad) =
          15 P            32 g            49 x
          16 Q            33 h            50 y
在VB中可以简单的将其保存为一个常量:
Private Const Base64Table =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

编码过程是这样的,第一个字符通过右移2位获得第一个目标字符的Base64表位置,根据
这个数值取到表上相应的字符,就是第一个目标字符
,然后将第一个字符左移6位加上第二个字符右移4位,即获得第二个目标字符,再将第二
个字符左移4位加上第三个字符右移6位,获得第三个
目标字符,最后取第三个字符的右6位即获得第四个目标字符.

例如我们取一个简单的字符串"TEST..."
将其用SourceByte = StrConv(SourceText, vbFromUnicode)转换后获得二进制数组:
T         E         S         T            ...
84        69        83        84           ...
01010100  01000101  01010011  01010100     ...
01010100/01000101/01010011/01010100
01010100010001010101001101010100
转换后:
01010100010001010101001101010100
010101/000100/010101/010011/010101/00
010101    000100    010101    010011    010101    00....
21        4         21        19        21        ...
V         E         V         T         V         ...
最后得到的就是"VEVTV..."

对于第一个目标字符我们可以这样做:
(SourceByte(1) and 252)/4
第二个:
(SourceByte(1) and 3)*64 + (SourceByte(2) and 240)/16
第三个:
(SourceByte(2) and 15)*16 + (SourceByte(3) and 48)/64
第四个:
(SourceByte(3) and 63)

Base64解码过程正好相反,我就不多说了,另外有关MIME的RFC还是有很多的,如果需要详
细情况请自己查找,我上面那张表就摘自
<RFC1521#
MIME (Multipurpose Internet Mail Extensions)
Part One: Mechanisms for Specifying and Describing the Format of Internet
Message Bodies>


End of《base64编码和解码》

[] [返回上一页] [打 印] [收 藏]
下一篇文章:"欢乐时光"代码分析
 
∷相关“base64编码和解码”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.