asp 与 C#结果一致的base64编码

唉,这两天为了为了解决asp的base64编码与c#的base64编码不一致的问题可是费了老劲了,我基本把网络上的asp的base64编码都试过了,黄天不负有心人,总算让我找到了,我把它贴出来以便让用的人不饶湾了!

 

<% 
            const   BASE_64_MAP_INIT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  
            dim   nl  
            dim   Base64EncMap(63)  
            dim   Base64DecMap(127)     
            PUBLIC   SUB   initCodecs()  
                      nl   =   "<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      
            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  
   
            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  

 

%>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值