怎么用js写自定义key的base64加密

JavaScript013

怎么用js写自定义key的base64加密,第1张

functionBase64(){//privateproperty_keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="//publicmethodforencodingthis.encode=function(input){varoutput=""varchr1,chr2,chr3,enc1,enc2,enc3,enc4vari=0input=_utf8_encode(input)while(i>2enc2=((chr1&3)>4)enc3=((chr2&15)>6)enc4=chr3&63if(isNaN(chr2)){enc3=enc4=64}elseif(isNaN(chr3)){enc4=64}output=output+_keyStr.charAt(enc1)+_keyStr.charAt(enc2)+_keyStr.charAt(enc3)+_keyStr.charAt(enc4)}returnoutput}//publicmethodfordecodingthis.decode=function(input){varoutput=""varchr1,chr2,chr3varenc1,enc2,enc3,enc4vari=0input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"")while(i>4)chr2=((enc2&15)>2)chr3=((enc3&3)127)&&(c>6)|192)utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224)utftext+=String.fromCharCode(((c>>6)&63)|128)utftext+=String.fromCharCode((c&63)|128)}}returnutftext}//privatemethodforUTF-8decoding_utf8_decode=function(utftext){varstring=""vari=0varc=c1=c2=0while(i191)&&(c

这是  ew_dc

function ew_dc(s){

    var d='',k=0,a=new Array(),r

    for(i=0i<s.lengthi++){

        c=s.charCodeAt(i)

    if(c<128)c^=5d+=String.fromCharCode(c)

    if((i+1)%99==0){

        a[k++]=dd=''

        }

    }

    r=a.join('')+d

    document.write(r)

    }

    

解密 

function  cd_we(r){

var d='',k=0,a=new Array(),s

    for(i=0i<r.lengthi++){

        c=s.charCodeAt(i)

    if(c<128)c^=5d+=String.fromCharCode(c)

    if((i+1)%99==0){

        a[k++]=dd=''

        }

    }

    s=a.join('')+d

    document.write(s)

}

//两个函数其实一样O(∩_∩)O哈! 把用ew_dc处理过的字符串再用它处理一次就行了

一:最简单的加密解密

大家对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码用escape()函数加密后变为如下格式:

alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下:

%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

呵呵!如何?这次是完全都加密了!

当然,这样加密后的代码是不能直接运行的,幸好还有eval(codeString)可用,这个函数的作用就是检查JavaScript代码并执行,必选项 codeString 参数是包含有效 JavaScript 代码的字符串值,加上上面的解码unescape(),加密后的结果如下:

<SCRIPT LANGUAGE="JavaScript">

var code=unescape("%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B")

eval(code)

</SCRIPT>

是不是很简单?不要高兴,解密也就同样的简单,解密代码都摆给别人啦(unescape())!呵呵

二:转义字符"\"的妙用

大家可能对转义字符"\"不太熟悉,但对于JavaScript提供了一些特殊字符如:\n (换行)、 \r (回车)、\' (单引号 )等应该是有所了解的吧?其实"\"后面还可以跟八进制或十六进制的数字,如字符"a"则可以表示为:"\141"或"\x61"(注意是小写字符"x"),至于双字节字符如汉字"黑"则仅能用十六进制表示为"\u9ED1"(注意是小写字符"u"),其中字符"u"表示是双字节字符,根据这个原理例子代码则可以表示为:

八进制转义字符串如下:

<SCRIPT LANGUAGE="JavaScript">

eval("\141\154\145\162\164\50\42\u9ED1\u5BA2\u9632\u7EBF\42\51\73")

</SCRIPT>

十六进制转义字符串如下:

<SCRIPT LANGUAGE="JavaScript">

eval("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")

</SCRIPT>

这次没有了解码函数,因为JavaScript执行时会自行转换,同样解码也是很简单如下:

<SCRIPT LANGUAGE="JavaScript">

alert("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")

</SCRIPT>

就会弹出对话框告诉你解密后的结果!