VB6实现Base64编码/解码

转载 2007年09月17日 10:24:00

Private Const cstBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Private arrBase64() As String

'00100001 00100001 00100001             --源码
'00001000 00010010 00000100 00100001    --Base64码

Public Function Base64Encode(strSource As String) As String
On Error Resume Next

If UBound(arrBase64) = -1 Then
    arrBase64 = Split(StrConv(cstBase64, VBUnicode), VBNullChar)
End If
Dim arrB() As Byte, bTmp(2)  As Byte, bT As Byte
Dim I As Long, J As Long
arrB = StrConv(strSource, VBFromUnicode)

J = UBound(arrB)
For I = 0 To J Step 3
    Erase bTmp
    bTmp(0) = arrB(I + 0)
    bTmp(1) = arrB(I + 1)
    bTmp(2) = arrB(I + 2)
   
    bT = (bTmp(0) And 252) / 4
    Base64Encode = Base64Encode & arrBase64(bT)
   
    bT = (bTmp(0) And 3) * 16
    bT = bT + bTmp(1) / 16
    Base64Encode = Base64Encode & arrBase64(bT)
   
    bT = (bTmp(1) And 15) * 4
    bT = bT + bTmp(2) / 64
    If I + 1 <= J Then
        Base64Encode = Base64Encode & arrBase64(bT)
    Else
        Base64Encode = Base64Encode & "="
    End If
   
    bT = bTmp(2) And 63
    If I + 2 <= J Then
        Base64Encode = Base64Encode & arrBase64(bT)
    Else
        Base64Encode = Base64Encode & "="
    End If
Next
End Function

Public Function Base64Decode(strEncoded As String) As String
On Error Resume Next
Dim arrB() As Byte, bTmp(3)  As Byte, bT, bRet() As Byte
Dim I As Long, J As Long
arrB = StrConv(strEncoded, VBFromUnicode)
J = InStr(strEncoded & "=", "=") - 2
ReDim bRet(J - J / 4 - 1)
For I = 0 To J Step 4
    Erase bTmp
    bTmp(0) = (InStr(cstBase64, Chr(arrB(I))) - 1) And 63
    bTmp(1) = (InStr(cstBase64, Chr(arrB(I + 1))) - 1) And 63
    bTmp(2) = (InStr(cstBase64, Chr(arrB(I + 2))) - 1) And 63
    bTmp(3) = (InStr(cstBase64, Chr(arrB(I + 3))) - 1) And 63
   
    bT = bTmp(0) * 2 ^ 18 + bTmp(1) * 2 ^ 12 + bTmp(2) * 2 ^ 6 + bTmp(3)
   
    bRet((I / 4) * 3) = bT / 65536
    bRet((I / 4) * 3 + 1) = (bT And 65280) / 256
    bRet((I / 4) * 3 + 2) = bT And 255
Next
Base64Decode = StrConv(bRet, VBUnicode)
End Function

 

VB实现Base64 编解码

作者:iamlasong 一、编码规则     编码规则网上很多,为了文章的完整性,这里简单的叙述一下。Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数...
  • iamlaosong
  • iamlaosong
  • 2014年07月28日 15:06
  • 7193

url编解码与base64编解码

最近做手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下: /**  * @param scene 标识发送手Q会话或者Qzone  *         eQQScene.QQScene_QZ...
  • linxinfa
  • linxinfa
  • 2016年08月11日 23:40
  • 2573

Base64编码解码算法

Base64不是什么新奇的算法了,不过如果你没从事过页面开发(或者说动态页面开发,尤其是邮箱服务),你都不怎么了解过,只是听起来很熟悉。 对于黑客来说,Base64与MD5算法有着同样的位置,因...
  • nyist327
  • nyist327
  • 2014年10月28日 16:40
  • 2600

Base64编解码的C语言实现

Base64编码说明先简单的说明一下Base64的编码算法。Base64编码要求将3个8位字节(3*8=24)的数据转化为4个6位字节(4*6=24)的数据,之后在6位的前面填补两个0。当然需要编码的...
  • liyang051
  • liyang051
  • 2015年04月02日 11:04
  • 573

C++实现BASE64码编解码

原文:http://blog.csdn.net/chenxiaohua/archive/2009/04/16/4084602.aspx     #ifndef ___BASE64_H___ #defi...
  • hack_tian
  • hack_tian
  • 2017年06月18日 14:54
  • 627

Base64编码原理解析与Java实现

目前还在找工作,工作日时投投简历面面试,这周末难免就闲来无事了,那就只好看看慕课逛逛CSDN了,正巧看到一个关于Base64的课程《Java实现Base64加密》,点进去看看,完了发觉完全不是我想的那...
  • zdqdj1
  • zdqdj1
  • 2016年06月26日 00:39
  • 2441

base64编码原理及简单Python实现

廖老师的Python3教程中对base64编码的讲解讲得不是很清楚,我经过搜索和询问研究生同学,把一些有用的资料结合起来了,希望对你们有用。一、产生原因及作用用记事本打开exe、jpg、pdf这些文件...
  • sunflowerduidui
  • sunflowerduidui
  • 2016年05月31日 22:17
  • 1664

Java如何进行Base64的编码(Encode)与解码(Decode)?

Java进行Base64的编码(Encode)与解码(Decode)的几种方式与区别..
  • zhou_kapenter
  • zhou_kapenter
  • 2017年03月17日 16:37
  • 16717

java base64编码和解码的三种方式

方式一: 方式二: fangshi
  • hw1287789687
  • hw1287789687
  • 2014年04月26日 10:46
  • 11382

android BASE64编码和解码一

今天在做Android项目的时候遇到一个问题,需求是向服务器上传一张图片,要求把图片转化成图片流放在 json字符串里传输。类似这样的: {“name”:”jike”,”age”:”20”,”pic”...
  • u010524035
  • u010524035
  • 2016年09月14日 11:14
  • 4701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB6实现Base64编码/解码
举报原因:
原因补充:

(最多只允许输入30个字)