如何用asp进行base64加密?
日期:2001-1-12 17:08:00
出处:china asp
作者:bigeagle
<%
OPTION EXPLICIT
const BASE_64_MAP_INIT =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dim nl
' zero based arrays
dim Base64EncMap(63)
dim Base64DecMap(127)
' must be called before using anything else
PUBLIC SUB initCodecs()
' init vars
nl = "<P>" & chr(13) & chr(10)
' setup base 64
dim max, idx
max = len(BASE_64_MAP_INIT)
for idx = 0 to max - 1
' one based string
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
' encode base 64 encoded string
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
' check for stragglers
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
' decode base 64 encoded string
PUBLIC FUNCTION base64Decode(scrambled)
if len(scrambled) = 0 then
base64Decode = ""
exit function
end if
' ignore padding
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
' check for stragglers, will be 2 or 3 characters
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
' initialize
call initCodecs
' Testing code
' dim inp, encode
' inp = request.QueryString("input")
' encode = base64Encode(inp)
' response.write "Encoded value = " & encode & nl
' response.write "Decoded value = " & base64Decode(encode) & nl
%>
asp可逆加密函数
function encrypt(ecode)
dim texts
dim i
for i=1 to len(ecode)
texts=texts & chr(asc(mid(ecode,i,1))+i)
next
encrypt = texts
end function
function decrypt(dcode)
dim texts
dim i
for i=1 to len(dcode)
texts=texts & chr(asc(mid(dcode,i,1))-i)
next
decrypt=texts
end function
无聊写的一个16进制可逆加密函数...
//解密
function unCode (uncode_str){
un_code="";
uncode_str = uncode_str.split("-");
for(i=0; i<uncode_str.length;i++){
un_code+=chr(parseInt(uncode_str[i],16));
}
return(un_code);
}
//加密
function Code (code_str){
code="";
code_str = code_str.split("");
for(i=0; i<code_str.length; i++){
code+=ord(code_str[i]).toString(16)+"-";
}
code=code.substr(0,code.length-1);
code=code.toUpperCase();
return(code);
}
A0-A0-A0-A0-6BCF-4E2A-4EBA-90FD-6709-81EA-5DF1-7684-7AE5-5E74-FF0C-65E0-8BBA-4F60-662F-
5426-6709-4E00-4E2A-5FEB-4E50-7684-7AE5-5E74-FF0C-90A3-90FD-662F-4F60-4E00-751F-4E2D-6700-
5B9D-8D35-7684-65F6-5149-3002-D-20-A0-A0-A0-524D-4E9B-65E5-5B50-5076-7136-826F-5FC3-53D1-
73B0-FF0C-53BB-5BFB-8BBF-513F-65F6-7684-73A9-4F34-FF0C-53BB-8FFD-5FC6-6211-4EEC-4ECE-5E7C-
513F-56ED-5230-5C0F-5B66-4E00-540C-8D70-8FC7-7684-516B-5E74-7F8E-597D-65F6-5149-3002-8D70-
7740-90A3-6761-20-4EE5-524D-51E0-4E4E-5929-5929-8D70-7684-7F8A-80A0-5C0F-8DEF-FF0C-5FC3-
91CC-5450-558A-7740-FF1A-201C-6211-56DE-6765-4E86-FF01-201D-4E0D-77E5-4E0D-89C9-5DF2-5230-
4E86-4ED6-5BB6-FF0C-671B-7740-9508-8FF9-6591-6591-7684-9632-76D7-95E8-FF0C-60F3-7740-4ED6-
7684-6A21-6837-FF0C-771F-60F3-9A6C-4E0A-5C31-89C1-5230-4ED6-3002-53EF-4EFB-51ED-6211-600E-
4E48-53EB-95E8-5C31-662F-6CA1-4EBA-56DE-5E94-3002-8FD9-65F6-FF0C-4ED6-5BB6-9694-58C1-7684-
738B-5976-5976-6B65-5C65-8E52-8DDA-7684-8D70-4E86-51FA-6765-FF0C-4ED4-7EC6-770B-4E86-770B-
6211-FF0C-8BF4-9053-FF1A-201C-5C0F-4E1C-554A-FF0C-4F60-53EF-6709-4E00-9635-5B50-6CA1-6765-
4E86-554A-3002-4ED6-5DF2-7ECF-642C-8D70-4E86-554A-FF0C-96BE-9053-4F60-4E0D-77E5-9053-FF1F-
201D-201C-8D70-4E86-FF1F-201D-6211-5FC3-91CC-4E00-98A4-FF0C-90A3-4E2A-5728-5E7C-513F-56ED-
548C-6211-7A7F-4E00-6761-88E4-5B50-FF0C-5728-5C0F-5B66-548C-6211-4E00-8D77-8C03-76AE-6363-
86CB-4E00-8D77-7F5A-7AD9-7684-4EBA-5DF2-7ECF-8D70-4E86-FF1F-6211-9F3B-5B50-4E00-9178-FF0C-
773C-7736-4E0D-77E5-4E0D-89C9-5DF2-7ECF-6E7F-6DA6-4E86-FF0C-6709-4E00-79CD-201C-6614-4EBA-
5DF2-4E58-9EC4-9E64-53BB-FF0C-6B64-5730-7A7A-4F59-9EC4-9E64-697C-201D-7684-611F-89C9-3002-
201C-662F-554A-FF0C-4ED6-5988-5988-8BF4-4E0A-4E2D-5B66-5B66-4E60-592A-7D27-5F20-FF0C-8FD9-
8FB9-6B63-76D6-697C-6015-5F71-54CD-4ED6-3002-201D-738B-5976-5976-7684-8BDD-628A-6211-62C9-
56DE-4E86-73B0-5B9E-3002-D-20-A0-A0-A0-A0-A0-A0-A0-662F-7684-FF0C-642C-8D70-4E86-3002-4E3A
-4E86-66F4-597D-7684-5B66-4E60-FF0C-4E3A-4E86-8BA9-5BB6-957F-66F4-6EE1-610F-FF0C-4ED6-642C
-8D70-4E86-3002-4E5F-8BB8-513F-65F6-7684-6211-4EEC-4E0D-601D-4E0A-8FDB-FF0C-4E0D-975E-9ED1
-767D-FF0C-4E0D-8BBA-662F-975E-FF0C-53EA-77E5-9053-75AF-73A9-FF0C-53EF-6211-4EEC-6709-4E00
-9897-5FEB-4E50-3001-5E73-51E1-3001-800C-7B80-5355-7684-5FC3-3002-73B0-5728-FF0C-4E5F-8BB8
-6211-4EEC-6BD4-4EE5-524D-61C2-4E8B-4E86-FF0C-77E5-9053-597D-597D-5B66-4E60-4E86-FF0C-4E5F
-660E-4E8B-7406-4E86-FF0C-4F46-662F-6211-4EEC-5931-53BB-4E86-5B9D-8D35-7684-5FEB-4E50-FF0C
-53D8-7684-51B7-6F20-800C-590D-6742-8D77-6765-3002-6CA1-9519-FF0C-5B66-4E60-662F-5B66-751F
-7684-5929-804C-FF0C-53EF-5C31-662F-90A3-4E9B-6240-8C13-201C-628A-5B66-4E60-505A-4E3A-5174
-8DA3-201D-7684-201C-597D-5B69-5B50-201D-4EEC-FF0C-8C01-4E0D-6000-5FF5-7AE5-5E74-7684-65F6
-5149-FF1F-8C01-80FD-771F-6B63-505A-5230-5728-4EBA-751F-7684-5927-821E-53F0-4E0A-505A-4E00
-4E2A-51B7-9762-7684-4E3B-89D2-FF1F-8C01-4E0D-5411-5F80-8F7B-677E-3001-81EA-7531-3001-5FEB
-4E50-FF1F-7684-786E-FF0C-6211-4EEC-73B0-5728-5904-5728-4E00-4E2A-5173-952E-7684-9636-6BB5
-FF0C-53EF-6211-4EEC-4E0D-80FD-4E3A-6B64-5931-53BB-5FEB-4E50-FF0C-5931-53BB-8F7B-677E-3001
-4E50-89C2-7684-5FC3-6001-3002-51CF-8F7B-5FC3-7406-7684-538B-529B-FF0C-53BB-6389-80A9-4E0A
-6C89-7538-7538-7684-91CD-62C5-FF0C-6765-5427-FF01-6DF1-547C-5438-FF0C-8BA9-6E05-51C9-7684
-7A7A-6C14-8D2F-901A-5168-8EAB-FF0C-5FD8-5374-4E00-5207-70E6-607C-FF0C-5728-671D-9633-5347
-8D77-7684-65E9-6668-FF0C-4EE5-6700-6109-5FEB-7684-5FC3-60C5-53BB-8FCE-63A5-5D2D-65B0-7684
-4E00-5929-FF01
据称叫AzDGCrypt算法。
passport_encrypt()是加密函数,用法为 passport_encrypt($txt, $key),其中 $txt 是待加密的字串
,$key 是公共密匙。
passport_decrypt()是解密函数,用法为 passport_decrypt($txt, $key),其中 $txt 是加密后的字串
,$key 是公共密匙。
<?
function passport_encrypt($txt, $key) {
srand((double)microtime() * 1000000);
$encrypt_key = md5(rand(0, 32000));
$ctr = 0;
$tmp = '';
for($i = 0;$i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
}
return base64_encode(passport_key($tmp, $key));
}
function passport_decrypt($txt, $key) {
$txt = passport_key(base64_decode($txt), $key);
$tmp = '';
for ($i = 0;$i < strlen($txt); $i++) {
$md5 = $txt[$i];
$tmp .= $txt[++$i] ^ $md5;
}
return $tmp;
}
function passport_key($txt, $encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr = 0;
$tmp = '';
for($i = 0; $i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
}
return $tmp;
}
?>
浙公网安备 33010602011771号