base64编码解码代码

ContractedBlock.gif ExpandedBlockStart.gif Code
<html>
<head>
<meta http-equiv=Content-Type content=text/html;charset=gb2312>
<script language=javascript>
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(
    
-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1,
    
-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1,
    
-1-1-1-1-1-1-1-1-1-1-162-1-1-163,
    
52535455565758596061-1-1-1-1-1-1,
    
-1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  91011121314,
    
1516171819202122232425-1-1-1-1-1,
    
-1262728293031323334353637383940,
    
4142434445464748495051-1-1-1-1-1);
function base64encode(str) {
    
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    
var out, i, len;
    
var c1, c2, c3;
    len 
= str.length;
    i 
= 0;
    out 
= "";
    
while(i < len) {
        c1 
= str.charCodeAt(i++& 0xff;
        
if(i == len) {
            out 
+= base64EncodeChars.charAt(c1 >> 2);
            out 
+= base64EncodeChars.charAt((c1 & 0x3<< 4);
            out 
+= "==";
            
break;
        }
        c2 
= str.charCodeAt(i++);
        
if(i == len) {
            out 
+= base64EncodeChars.charAt(c1 >> 2);
            out 
+= base64EncodeChars.charAt(((c1 & 0x3)<< 4| ((c2 & 0xF0>> 4));
            out 
+= base64EncodeChars.charAt((c2 & 0xF<< 2);
            out 
+= "=";
            
break;
        }
        c3 
= str.charCodeAt(i++);
        out 
+= base64EncodeChars.charAt(c1 >> 2);
        out 
+= base64EncodeChars.charAt(((c1 & 0x3)<< 4| ((c2 & 0xF0>> 4));
        out 
+= base64EncodeChars.charAt(((c2 & 0xF<< 2| ((c3 & 0xC0>>6));
        out 
+= base64EncodeChars.charAt(c3 & 0x3F);
    }
    
return out;
}
function base64decode(str) {
    
var c1, c2, c3, c4;
    
var i, len, out;
    len 
= str.length;
    i 
= 0;
    out 
= "";
    
while(i < len) {
        
do {
            c1 
= base64DecodeChars[str.charCodeAt(i++& 0xff];
        } 
while(i < len && c1 == -1);
        
if (c1 == -1break;
        
do {
            c2 
= base64DecodeChars[str.charCodeAt(i++& 0xff];
        } 
while(i < len && c2 == -1);
        
if (c2 == -1break;
        out 
+= String.fromCharCode((c1 << 2| ((c2 & 0x30>> 4));
        
do {
            c3 
= str.charCodeAt(i++& 0xff;
            
if (c3 == 61)  return out;
            c3 
= base64DecodeChars[c3];
        } 
while(i < len && c3 == -1);
        
if(c3 == -1break;
        out 
+= String.fromCharCode(((c2 & 0XF<< 4| ((c3 & 0x3C>> 2));
        
do {
            c4 
= str.charCodeAt(i++& 0xff;
            
if(c4 == 61return out;
            c4 
= base64DecodeChars[c4];
        } 
while(i < len && c4 == -1);
        
if(c4 == -1break;
        out 
+= String.fromCharCode(((c3 & 0x03<< 6| c4);
    }
    
return out;
}
function jiami() {
    
var str=input.value.replace(/ +$/g,"");
    if (str.search(/^thunder|^flashget/i)==-1) {
        
var thunder="AA"+str+"ZZ";
        thunder
="thunder://"+base64encode(thunder);
        
var flashget="[FLASHGET]"+str+"[FLASHGET]";
        flashget
="flashget://"+base64encode(flashget)+"&abc";
        x.innerHTML
="迅雷地址:<br><a href="+thunder+">"+thunder+"<\/a><br><br>快车地址:<br><a href="+flashget+">"+flashget+"<\/a>";
    }
}
function jiemi() {
    
var str=input.value.replace(/ +$|\/$/g,"");
    
if (str.search(/^thunder/i)!=-1) {
        str
=str.replace("thunder://","");
        str
=base64decode(str).replace(/^AA|ZZ$/gi,"");
        x.innerHTML
="原始地址:<br><a href="+str+">"+str+"<\/a>";
    }
    
else if (str.search(/^flashget/i)!=-1) {
        str
=str.replace("flashget://","");
        str
=str.replace(/&.*$/,"");
        str
=base64decode(str).replace(/^\[FLASHGET\]|\[FLASHGET\]$/gi,"");
        x.innerHTML
="原始地址:<br><a href="+str+">"+str+"<\/a>";
    }
    
else x.innerHTML="地址格式不正确,无法解密。";
}
</script>
</HEAD>
<body>
输入:
<br>
<textarea id="input" rows=4 cols=60></textarea><br><br>
<input type=button value=" 加密 " onclick="jiami()">  <input type=button value=" 解密 " onclick="jiemi()">
<br><br>
输出:
<br><br>
<div id=x></div>
</body>
</html>

转载于:https://www.cnblogs.com/mier001/archive/2009/02/01/1381891.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值