📄 flashget_base64.asp
字号:
<script>
function ConvertURL2FG(url,fUrl,uid)
{
try{
FlashgetDown(url,uid);
}catch(e){
location.href = fUrl;
}
}
function Flashget_SetHref(obj){obj.href = obj.fg;}</script>
<%
Function getTime()
getTime = DateDiff("s", "1970-01-01 08:00:00", Date()) * 1000 + Int(CDbl(Timer()) * 1000)
End Function
Function FlashgetEncode(t_url,uid)
Dim prefix,FlashgetURL,fg_uid,fg_time
fg_uid = uid
fg_time = Now()
prefix = "Flashget://"
FlashgetURL = prefix & fg_strAnsi2Unicode(fg_Base64encode(fg_strUnicode2Ansi("[FLASHGET]" & t_url & "[FLASHGET]"))) & "&" &uid
'&"&"& fg_uid & "&" & getTime()
FlashgetEncode= FlashgetURL
End Function
Function strUnicodeLen(asContents)
//计算unicode字符串的Ansi编码的长度
Dim asContents1, len1, k, i
asContents1="a"&asContents
len1=len(asContents1)
k=0
for i=1 to len1
Dim asc1
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 fg_strUnicode2Ansi(asContents)
//将Unicode编码的字符串,转换成Ansi编码的字符串
Dim len1, i
fg_strUnicode2Ansi=""
len1=len(asContents)
for i=1 to len1
Dim varchar, varasc, varHex, varlow, varhigh
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)
fg_strUnicode2Ansi=fg_strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
else
fg_strUnicode2Ansi=fg_strUnicode2Ansi & chrb(varasc)
end if
next
End function
Function fg_strAnsi2Unicode(asContents)
//将Ansi编码的字符串,转换成Unicode编码的字符串
Dim len1, i
fg_strAnsi2Unicode = ""
len1=lenb(asContents)
if len1=0 then exit function
for i=1 to len1
dim varchar, varasc
varchar=midb(asContents,i,1)
varasc=ascb(varchar)
if varasc > 127 then
fg_strAnsi2Unicode = fg_strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
i=i+1
else
fg_strAnsi2Unicode = fg_strAnsi2Unicode & chr(varasc)
end if
next
End function
Function fg_Base64encode(asContents)
//将Ansi编码的字符串进行Base64编码
//asContents应当是ANSI编码的字符串(二进制的字符串也可以)
Dim sBASE_64_CHARACTERS
sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
sBASE_64_CHARACTERS = fg_strUnicode2Ansi(sBASE_64_CHARACTERS)
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 m3,m4,len1,len2
len1=Lenb(asContents)
if len1<1 then
fg_Base64encode=""
exit Function
end if
m3=Len1 Mod 3
If m3 > 0 Then
//补足位数是为了便于计算
asContents = asContents & String(3-m3, chrb(0))
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
fg_Base64encode = lsResult
End Function
Function Base64decode(asContents)
//将Base64编码字符串转换成Ansi编码的字符串
//asContents应当也是ANSI编码的字符串(二进制的字符串也可以)
Dim sBASE_64_CHARACTERS
sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
sBASE_64_CHARACTERS = fg_strUnicode2Ansi(sBASE_64_CHARACTERS)
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
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -