ASP BASE64加解密(親測(cè)可用)
更新時(shí)間:2014年07月17日 08:52:31 投稿:mdxy-dxy
之前腳本之家小編已經(jīng)為大家分享了了幾個(gè)asp BASE64加解密函數(shù)代碼,不過(guò)實(shí)際用的過(guò)程中都有這樣或那樣的問(wèn)題,現(xiàn)在重新整理一個(gè)
核心代碼:
<%
' OPTION EXPLICIT
const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dim newline
dim Base64EncMap(63)
dim Base64DecMap(127)
'初始化函數(shù)
PUBLIC SUB initCodecs()
' 初始化變量
newline = "<P>" & chr(13) & chr(10)
dim max, idx
max = len(BASE_64_MAP_INIT)
for idx = 0 to max - 1
Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
next
for idx = 0 to max - 1
Base64DecMap(ASC(Base64EncMap(idx))) = idx
next
END SUB
'Base64加密函數(shù)
PUBLIC FUNCTION base64Encode(plain)
if len(plain) = 0 then
base64Encode = ""
exit function
end if
dim ret, ndx, by3, first, second, third
by3 = (len(plain) \ 3) * 3
ndx = 1
do while ndx <= by3
first = asc(mid(plain, ndx+0, 1))
second = asc(mid(plain, ndx+1, 1))
third = asc(mid(plain, ndx+2, 1))
ret = ret & Base64EncMap( (first \ 4) AND 63 )
ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
ret = ret & Base64EncMap( third AND 63)
ndx = ndx + 3
loop
if by3 < len(plain) then
first = asc(mid(plain, ndx+0, 1))
ret = ret & Base64EncMap( (first \ 4) AND 63 )
if (len(plain) MOD 3 ) = 2 then
second = asc(mid(plain, ndx+1, 1))
ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
ret = ret & Base64EncMap( ((second * 4) AND 60) )
else
ret = ret & Base64EncMap( (first * 16) AND 48)
ret = ret '& "="
end if
ret = ret '& "="
end if
base64Encode = ret
END FUNCTION
'Base64解密函數(shù)
PUBLIC FUNCTION base64Decode(scrambled)
if len(scrambled) = 0 then
base64Decode = ""
exit function
end if
dim realLen
realLen = len(scrambled)
do while mid(scrambled, realLen, 1) = "="
realLen = realLen - 1
loop
dim ret, ndx, by4, first, second, third, fourth
ret = ""
by4 = (realLen \ 4) * 4
ndx = 1
do while ndx <= by4
first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
third = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
ret = ret & chr( ((first * 4) AND 255) + ((second \ 16) AND 3))
ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
ret = ret & chr( ((third * 64) AND 255) + (fourth AND 63))
ndx = ndx + 4
loop
if ndx < realLen then
first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
ret = ret & chr( ((first * 4) AND 255) + ((second \ 16) AND 3))
if realLen MOD 4 = 3 then
third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
end if
end if
base64Decode = ret
END FUNCTION
%>
使用方法:
' 初始化
call initCodecs
Response.Write(base64Encode("腳本之家之我要加密的字符串"))
Response.Write(base64Decode("bWFyczIwMTAwMjIw0"))
相關(guān)文章
十萬(wàn)條Access數(shù)據(jù)表分頁(yè)的兩個(gè)解決方法
后臺(tái)數(shù)據(jù)庫(kù)用是Access,客戶用了一年后說(shuō)打開界面非常慢,查看了數(shù)據(jù)庫(kù)后發(fā)現(xiàn)數(shù)據(jù)表中的記錄已有五萬(wàn)多條,自己試過(guò)將記錄復(fù)制到10 萬(wàn)條,打開界面非常慢,翻頁(yè)也是同樣的問(wèn)題2008-06-06
透徹掌握ASP分頁(yè)技術(shù)很詳細(xì)的分析
一些論壇上面關(guān)于分頁(yè)的ASP程序依然有許多的關(guān)注者,但里面只有代碼,沒有詳細(xì)的解釋,對(duì)于初學(xué)者來(lái)說(shuō),這樣總是得不到真正的掌握,此次我將針對(duì)分頁(yè)技術(shù)進(jìn)行詳解,讓大家來(lái)理解ASP分頁(yè)!2008-06-06
對(duì)象不支持此屬性或方法: Session.CodePage = 936 解決方法
這篇文章主要介紹了對(duì)象不支持此屬性或方法: Session.CodePage = 936 解決方法,需要的朋友可以參考下2015-07-07
GetPaing 函數(shù)之a(chǎn)sp采集函數(shù)中用到的獲取分頁(yè)的代碼
GetPaing 函數(shù)之a(chǎn)sp采集函數(shù)中用到的獲取分頁(yè)的代碼...2007-09-09
asp中向文本框輸出數(shù)據(jù)原樣式的函數(shù)
asp中向文本框輸出數(shù)據(jù)原樣式的函數(shù)...2007-03-03
asp textbox獲取顯示mysql數(shù)據(jù)示例代碼
這篇文章主要介紹了asp textbox如何獲取顯示mysql數(shù)據(jù),需要的朋友可以參考下2014-05-05

