亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Asp base64編碼、解碼函數

2019-11-18 16:27:05
字體:
來源:轉載
供稿:網友

這是我看完幾個base64編碼、解碼函數后自己改寫的。
因為,在中文操作系統的VBscript中,使用的是unicode字符集,所以
很多base64編碼、解碼函數在理論上是正確的,但實際不能運行!

文件名稱base64test.asp

<%

sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)

Function strUnicodeLen(asContents)
'計算unicode字符串的Ansi編碼的長度
asContents1="a"&asContents
len1=len(asContents1)
k=0
for i=1 to len1
asc1=asc(mid(asContents1,i,1))
if asc1<0 then asc1=65536+asc1
if asc1>255 then
k=k+2
else
k=k+1
end if
next
strUnicodeLen=k-1
End Function

Function strUnicode2Ansi(asContents)
'將Unicode編碼的字符串,轉換成Ansi編碼的字符串
strUnicode2Ansi=""
len1=len(asContents)
for i=1 to len1
varchar=mid(asContents,i,1)
varasc=asc(varchar)
if varasc<0 then varasc=varasc+65536
if varasc>255 then
varHex=Hex(varasc)
varlow=left(varHex,2)
varhigh=right(varHex,2)
strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
else
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
end if
next
End function

Function strAnsi2Unicode(asContents)
'將Ansi編碼的字符串,轉換成Unicode編碼的字符串
strAnsi2Unicode = ""
len1=lenb(asContents)
if len1=0 then exit function
for i=1 to len1
varchar=midb(asContents,i,1)
varasc=ascb(varchar)
if varasc > 127 then
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
i=i+1
else
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
end if
next
End function

Function Base64encode(asContents)
'將Ansi編碼的字符串進行Base64編碼
'asContents應當是ANSI編碼的字符串(二進制的字符串也可以)
Dim lnPosition
Dim lsResult
Dim Char1
Dim Char2
Dim Char3
Dim Char4
Dim Byte1
Dim Byte2
Dim Byte3
Dim SaveBits1
Dim SaveBits2
Dim lsGroupBinary
Dim lsGroup64
Dim m4,len1,len2

len1=Lenb(asContents)
if len1<1 then
Base64encode=""
exit Function
end if

m3=Len1 Mod 3
If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))
'補足位數是為了便于計算

IF m3 > 0 THEN
len1=len1+(3-m3)
len2=len1-3
else
len2=len1
end if

lsResult = ""

For lnPosition = 1 To len2 Step 3
lsGroup64 = ""
lsGroupBinary = Midb(asContents, lnPosition, 3)

Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))

Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) / 4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) / 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) / 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)
Char4 = Midb(sBASE_64_CHARACTERS, (Byte3 And 63) + 1, 1)
lsGroup64 = Char1 & Char2 & Char3 & Char4

lsResult = lsResult & lsGroup64
Next

'處理最后剩余的幾個字符
if M3 > 0 then
lsGroup64 = ""
lsGroupBinary = Midb(asContents, len2+1, 3)

Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))

Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) / 4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) / 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) / 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)

if M3=1 then
lsGroup64 = Char1 & Char2 & ChrB(61) & ChrB(61) '用=號補足位數
else
lsGroup64 = Char1 & Char2 & Char3 & ChrB(61) '用=號補足位數
end if

lsResult = lsResult & lsGroup64
end if

Base64encode = lsResult

End Function


Function Base64decode(asContents)
'將Base64編碼字符串轉換成Ansi編碼的字符串
'asContents應當也是ANSI編碼的字符串(二進制的字符串也可以)
Dim lsResult
Dim lnPosition
Dim lsGroup64, lsGroupBinary
Dim Char1, Char2, Char3, Char4
Dim Byte1, Byte2, Byte3
Dim M4,len1,len2

len1= Lenb(asContents)
M4 = len1 Mod 4

if len1 < 1 or M4 > 0 then
'字符串長度應當是4的倍數
Base64decode = ""
exit Function
end if

'判斷最后一位是不是 = 號
'判斷倒數第二位是不是 = 號
'這里m4表示最后剩余的需要單獨處理的字符個數
if midb(asContents, len1, 1) = chrb(61) then m4=3
if midb(asContents, len1-1, 1) = chrb(61) then m4=2

if m4 = 0 then
len2=len1
else
len2=len1-4
end if

For lnPosition = 1 To Len2 Step 4
lsGroupBinary = ""
lsGroup64 = Midb(asContents, lnPosition, 4)
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 And 48) / 16) Or (Char1 * 4) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) / 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))
lsGroupBinary = Byte1 & Byte2 & Byte3

lsResult = lsResult & lsGroupBinary
Next

'處理最后剩余的幾個字符
if M4 > 0 then
lsGroupBinary = ""
lsGroup64 = Midb(asContents, len2+1, m4) & chrB(65) 'chr(65)=A,轉換成值為0
if M4=2 then '補足4位,是為了便于計算
lsGroup64 = lsGroup64 & chrB(65)
end if
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 And 48) / 16) Or (Char1 * 4) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) / 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))

if M4=2 then
lsGroupBinary = Byte1
elseif M4=3 then
lsGroupBinary = Byte1 & Byte2
end if

lsResult = lsResult & lsGroupBinary
end if

Base64decode = lsResult

End Function


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久国产视频| 伊人激情综合网| 亚洲影视九九影院在线观看| 成人福利视频在线观看| 久久久av一区| 日韩hd视频在线观看| 久久天天躁狠狠躁夜夜躁2014| 国产精品亚洲一区二区三区| 国产精品久久久久久久一区探花| 国产精品jizz在线观看麻豆| 欧美大片在线看免费观看| 亚洲区bt下载| 亚洲视频在线观看网站| 岛国视频午夜一区免费在线观看| 国产精品免费网站| 久久亚洲国产精品成人av秋霞| 国产精品久久久久久久久久久久久| 国产91在线高潮白浆在线观看| 欧美一区二区三区四区在线| 伊人久久久久久久久久| 亚洲伊人一本大道中文字幕| 97免费中文视频在线观看| 福利视频一区二区| 久久久久久久爱| 欧美日韩国产丝袜另类| x99av成人免费| 91av在线播放| 亚洲va久久久噜噜噜久久天堂| 激情懂色av一区av二区av| 成人激情电影一区二区| 久久免费精品日本久久中文字幕| 91热精品视频| 91国产中文字幕| 国产精品高精视频免费| 亚洲欧美日韩中文在线| 91精品国产91久久久久福利| 亚洲最大av网| 欧美成人h版在线观看| 久久久久久久久亚洲| 欧美老女人性视频| 51视频国产精品一区二区| 欧美性精品220| 国产成人精品免费视频| 日韩欧美第一页| 久久久999精品免费| 亚洲人成啪啪网站| 日韩成人av在线| 亚洲天堂男人天堂女人天堂| 亚洲色图综合久久| 久久久精品一区二区三区| 亚洲美女中文字幕| 久久久久久12| 久久久久久久一区二区三区| 成人在线视频网站| 色综合导航网站| 亚洲成人久久久久| 在线播放亚洲激情| 亚洲裸体xxxx| 亚洲最大福利视频网站| 欧美专区日韩视频| 日韩中文字幕在线| 91中文字幕一区| 亚洲激情中文字幕| 欧美国产极速在线| 情事1991在线| 成人欧美一区二区三区黑人孕妇| 久久精品国产v日韩v亚洲| 亚洲欧美日韩视频一区| 精品久久久免费| 国产盗摄xxxx视频xxx69| 亚洲韩国欧洲国产日产av| 国产精品伦子伦免费视频| 亚洲热线99精品视频| 丁香五六月婷婷久久激情| 亚洲xxxx视频| 国自产精品手机在线观看视频| 国产精品wwwwww| 国内精品一区二区三区四区| 色哟哟网站入口亚洲精品| 久久人人爽亚洲精品天堂| xvideos成人免费中文版| 欧美一区二区三区免费视| 久热精品视频在线观看一区| 一区二区三区四区在线观看视频| 国产91精品青草社区| 欧美第一淫aaasss性| 国产成人午夜视频网址| 国产精品96久久久久久又黄又硬| 久久久久久久亚洲精品| 日韩成人在线免费观看| 日韩成人性视频| 欧美最近摘花xxxx摘花| 欧美日在线观看| 欧美一级电影在线| 97香蕉超级碰碰久久免费的优势| 97成人精品视频在线观看| 国产精品欧美一区二区| 欧美色视频日本高清在线观看| 国产精品自拍偷拍| 亚洲女人天堂色在线7777| 国产精品久久综合av爱欲tv| 亚洲自拍偷拍视频| 欧美黑人国产人伦爽爽爽| 欧美日韩一区二区在线| 91亚洲国产成人精品性色| 精品久久久久久中文字幕一区奶水| 久久艳片www.17c.com| 一区二区三区在线播放欧美| 国产丝袜一区二区| 国产福利成人在线| 亚洲欧洲高清在线| 久久精品国产一区二区电影| 久久这里有精品视频| 亚洲国产天堂久久综合网| 国产精品91一区| 日韩欧美有码在线| 成人乱色短篇合集| 日韩在线免费高清视频| 国产美女精品视频免费观看| 欧美性感美女h网站在线观看免费| 欧洲精品毛片网站| 久久久久九九九九| 国产在线观看一区二区三区| 日韩av免费看网站| 亚洲香蕉伊综合在人在线视看| 91在线无精精品一区二区| 国产精品久久久久久久久久新婚| 2019日本中文字幕| 国产国语videosex另类| 亚洲视频自拍偷拍| 97香蕉超级碰碰久久免费软件| 久久天天躁夜夜躁狠狠躁2022| 午夜精品一区二区三区在线播放| 亚洲大胆人体视频| 亚洲欧美激情一区| 国产精品久久久久久久久免费| 日韩在线视频中文字幕| 97视频免费看| 成人激情视频在线播放| 51精品在线观看| 欧美激情国内偷拍| 国内外成人免费激情在线视频网站| 亚洲淫片在线视频| 国产女同一区二区| 久久久国产精品亚洲一区| 国产精品久久久久久久久粉嫩av| 国产在线精品自拍| 不用播放器成人网| 亚洲人成电影在线观看天堂色| 日产精品久久久一区二区福利| 国产不卡视频在线| 欧美性极品xxxx做受| 日韩av免费在线| 欧美日韩国产精品一区二区不卡中文| 精品久久久中文| 亚洲午夜av久久乱码| 岛国av在线不卡| 美日韩精品视频免费看| 国产日韩欧美成人| 九九视频直播综合网| 亚洲护士老师的毛茸茸最新章节| 国产精品久久久久久久av大片| 一区二区三区高清国产| 国产精品伦子伦免费视频|