如何用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;
  }
?>

posted on 2007-02-01 10:58  许维光  阅读(2701)  评论(0)    收藏  举报