• js字符串加密的几种方法


    在做web前端的时候免不了要用javascript来处理一些简单操作,其实如果要用好JQuery, Prototype,Dojo 等其中一两个javascript框架并不简单,它提高你的web交互和用户体验,从而能使你的web前端有非一样的感觉,如海阔凭鱼跃。当然,对于javascript我也是半桶水。高手莫怪,在此我仅总结学习一下,以备用到时查录。

    今天不说框架的事情,就从最基本的、比较常用的javascript代码入手。

    先说简单字符串加密的事情

    View Code
    /*8进制加密*/
    function EnEight(){
        
    var monyer = new Array();var i,s;
        
    for(i=0;i<txt.value.length;i++)
            monyer
    +="\\"+txt.value.charCodeAt(i).toString(8); 
        txt.value
    =monyer;
    }
    /*8进制解密*/
    function DeEight(){
        
    var monyer = new Array();var i;
        
    var s=txt.value.split("\\");
        
    for(i=1;i<s.length;i++)
            monyer
    +=String.fromCharCode(parseInt(s[i],8));
        txt.value
    =monyer;
    }
    View Code
    /*10进制加密*/
    function Encrypt(){
        
    var monyer = new Array();var i,s;
        
    for(i=0;i<txt.value.length;i++){
            s
    =txt.value.charCodeAt(i).toString(16); 
            
    if(Decimal1.checked) monyer+="&#"+txt.value.charCodeAt(i)+";";
            
    else if (Decimal2.checked) monyer+="&#"+new Array(7-String(s).length).join("0")+txt.value.charCodeAt(i);
            
    else monyer+=txt.value.charCodeAt(i)+",";
        }txt.value
    =monyer;
    }
    /*10进制解密*/
    function Decrypt(){
        
    var monyer = new Array();var i;
        
    if(Decimal1.checked){
            
    var s=txt.value.split(";");
            
    for(i=0;i<s.length;i++){
                s[i]
    =s[i].replace('&#','');
                monyer
    +=String.fromCharCode(s[i]);
            }
        }
    else if(Decimal2.checked){
            
    var s=txt.value.split("&");
            
    for(i=1;i<s.length;i++){
                s[i]
    =s[i].replace('#','');
                monyer
    +=String.fromCharCode(s[i]);
            }
        }
    else{
            
    var s=txt.value.split(",");
            
    for(i=0;i<s.length;i++)
                monyer
    +=String.fromCharCode(s[i]);
        }txt.value
    =monyer;
    }
    View Code
    /*16进制加密*/
    function JavaEn(){
        
    var monyer = new Array();var i,s;
        
    for(i=0;i<txt.value.length;i++){
            s
    =txt.value.charCodeAt(i).toString(16); 
            
    if(hex1.checked) monyer+="\\u"+new Array(5-String(s).length).join("0")+s;
            
    else if(hex2.checked) monyer+="&#x"+new Array(5-String(s).length).join("0")+s+";";
            
    else if(hex3.checked) monyer+="\\x"+new Array(5-String(s).length).join("0")+s;
            
    else monyer+="\\"+new Array(5-String(s).length).join("0")+s;
        }txt.value
    =monyer;
    }
    var p=document.documentElement.outerHTML.length;
    /*16进制解密*/
    function JavaDe(){
        
    if(hex1.checked){
            
    var monyer = new Array();var i;
            
    var s=txt.value.split("\\");
            
    for(i=1;i<s.length;i++){
                s[i]
    =s[i].replace('u','');
                monyer
    +=String.fromCharCode(parseInt(s[i],16));
            }
        }
    else if(hex2.checked){
            
    var monyer = new Array();var i;
            
    var s=txt.value.split(";");
            
    for(i=0;i<s.length;i++){
                s[i]
    =s[i].replace('&#x','');
                monyer
    +=String.fromCharCode(parseInt(s[i],16));
            }
        }
        
    else if(hex3.checked){
            
    var monyer = new Array();var i;
            
    var s=txt.value.split("\\");
            
    for(i=1;i<s.length;i++){
                s[i]
    =s[i].replace('x','');
                monyer
    +=String.fromCharCode(parseInt(s[i],16));
            }
        }
    else{
            
    var monyer = new Array();var i;
            
    var s=txt.value.split("\\");
            
    for(i=1;i<s.length;i++)
                monyer
    +=String.fromCharCode(parseInt(s[i],16));
        }txt.value
    =monyer;
    }
    /*任意进制加密*/
    function EnChTo(h){
        
    var monyer = new Array();var i,s;
        
    for(i=0;i<txt.value.length;i++)
            monyer
    +=txt.value.charCodeAt(i).toString(h)+" "
        txt.value
    =monyer;
    }
    /*任意进制解密*/
    function DeChTo(h){
        
    var monyer = new Array();var i;
        
    var s=txt.value.split(" ");
        
    for(i=0;i<s.length;i++)
            monyer
    +=String.fromCharCode(parseInt(s[i],h));
        txt.value
    =monyer;
    }
     

    加密类似URL的字符

     View Code

    function URLEncode(plaintext )
    {
    var SAFECHARS = "0123456789" + // Numeric
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
    "abcdefghijklmnopqrstuvwxyz" +
    "-_.!~*'()"// RFC2396 Mark characters
    var HEX = "0123456789ABCDEF";
    var encoded = "";
    for (var i = 0; i < plaintext.length; i++ ) {
    var ch = plaintext.charAt(i);
    if (ch == " ") {
    encoded 
    += "+"// x-www-urlencoded, rather than %20
    else if (SAFECHARS.indexOf(ch) != -1) {
    encoded 
    += ch;
    else {
    var charCode = ch.charCodeAt(0);
    if (charCode > 255) {
    encoded 
    += "+";
    else {
    encoded 
    += "%";
    encoded 
    += HEX.charAt((charCode >> 4& 0xF);
    encoded 
    += HEX.charAt(charCode & 0xF);
    }
    }
    // for
    return encoded;
    };

     //html Encode

    View Code
      function HtmlEncode(i)
                    {
                    
    if (i == 1)
                        txt.value
                            
    = txt.value.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g,
                                                                                                                      
    '&gt;');

                    
    if (i == 2)
                        txt.value
                            
    = txt.value.replace(/&amp;/g, '&').replace(/&quot;/g, '\"').replace(/&lt;/g,
                                                                                                
    '<').replace(/&gt;/g, '>')
                    }

                
    var hex_chr = "0123456789abcdef";

                
    function rhex(num)
                    {
                    str 
    = "";

                    
    for (j = 0; j <= 3; j++)
                        str 
    += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F+ hex_chr.charAt((num >> (j * 8)) & 0x0F);

                    
    return str
                    }

    //base64

    View Code
     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-163525354555657,
                                                  
    58596061-1-1-1-1-1-1-10,  1,  2,  3,  4,  5,  6,
                                                  
    7,  8,  9,  101112131415161718192021222324,
                                                  
    25-1-1-1-1-1-12627282930313233343536,
                                                  
    373839404142434445464748495051-1-1-1,
                                                  
    -1-1);

                
    function base64encode(str)
                    {
                    
    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 == -1)
                            
    break;

                        
    do
                            {
                            c2 
    = base64DecodeChars[str.charCodeAt(i++& 0xff]
                            } 
    while (i < len && c2 == -1);

                        
    if (c2 == -1)
                            
    break;

                        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 == -1)
                            
    break;

                        out 
    += String.fromCharCode(((c2 & 0XF<< 4| ((c3 & 0x3C>> 2));

                        
    do
                            {
                            c4 
    = str.charCodeAt(i++& 0xff;

                            
    if (c4 == 61)
                                
    return out;

                            c4 
    = base64DecodeChars[c4]
                            } 
    while (i < len && c4 == -1);

                        
    if (c4 == -1)
                            
    break;

                        out 
    += String.fromCharCode(((c3 & 0x03<< 6| c4)
                        }

                    
    return out
                    }

    //utf8 <->16

    View Code
     function utf16to8(str)
                    {
                    
    var out, i, len, c;
                    out 
    = "";
                    len 
    = str.length;

                    
    for (i = 0; i < len; i++)
                        {
                        c 
    = str.charCodeAt(i);

                        
    if ((c >= 0x0001&& (c <= 0x007F))
                            {
                            out 
    += str.charAt(i)
                            }

                        
    else if (c > 0x07FF)
                            {
                            out 
    += String.fromCharCode(0xE0 | ((c >> 12& 0x0F));
                            out 
    += String.fromCharCode(0x80 | ((c >> 6& 0x3F));
                            out 
    += String.fromCharCode(0x80 | ((c >> 0& 0x3F))
                            }

                        
    else
                            {
                            out 
    += String.fromCharCode(0xC0 | ((c >> 6& 0x1F));
                            out 
    += String.fromCharCode(0x80 | ((c >> 0& 0x3F))
                            }
                        }

                    
    return out
                    }

                
    function utf8to16(str)
                    {
                    
    var out, i, len, c;
                    
    var char2, char3;
                    out 
    = "";
                    len 
    = str.length;
                    i 
    = 0;

                    
    while (i < len)
                        {
                        c 
    = str.charCodeAt(i++);

                        
    switch (c >> 4)
                            {
                            
    case 0:
                            
    case 1:
                            
    case 2:
                            
    case 3:
                            
    case 4:
                            
    case 5:
                            
    case 6:
                            
    case 7:
                                out 
    += str.charAt(i - 1);

                                
    break;

                            
    case 12:
                            
    case 13:
                                char2 
    = str.charCodeAt(i++);

                                out 
    += String.fromCharCode(((c & 0x1F<< 6| (char2 & 0x3F));
                                
    break;

                            
    case 14:
                                char2 
    = str.charCodeAt(i++);

                                char3 
    = str.charCodeAt(i++);
                                out 
    += String.fromCharCode(((c & 0x0F<< 12| ((char2 & 0x3F<< 6)
                                                               
    | ((char3 & 0x3F<< 0));
                                
    break
                            }
                        }

                    
    return out
                    }

    //MD5

    View Code
     function str2blks_MD5(str)
                    {
                    nblk 
    = ((str.length + 8>> 6+ 1;
                    blks 
    = new Array(nblk * 16);

                    
    for (i = 0; i < nblk * 16; i++)
                        blks[i] 
    = 0;

                    
    for (i = 0; i < str.length; i++)
                        blks[i 
    >> 2|= str.charCodeAt(i) << ((i % 4* 8);

                    blks[i 
    >> 2|= 0x80 << ((i % 4* 8);
                    blks[nblk 
    * 16 - 2= str.length * 8;
                    
    return blks
                    }

                
    function add(x, y)
                    {
                    
    var lsw = (x & 0xFFFF+ (y & 0xFFFF);
                    
    var msw = (x >> 16+ (y >> 16+ (lsw >> 16);
                    
    return (msw << 16| (lsw & 0xFFFF)
                    }

                
    function rol(num, cnt)
                    {
                    
    return (num << cnt) | (num >>> (32 - cnt))
                    }

                
    function cmn(q, a, b, x, s, t)
                    {
                    
    return add(rol(add(add(a, q), add(x, t)), s), b)
                    }

                
    function ff(a, b, c, d, x, s, t)
                    {
                    
    return cmn((b & c) | ((~b) & d), a, b, x, s, t)
                    }

                
    function gg(a, b, c, d, x, s, t)
                    {
                    
    return cmn((b & d) | (c & (~d)), a, b, x, s, t)
                    }

                
    function hh(a, b, c, d, x, s, t)
                    {
                    
    return cmn(b ^ c ^ d, a, b, x, s, t)
                    }

                
    function ii(a, b, c, d, x, s, t)
                    {
                    
    return cmn(c ^ (b | (~d)), a, b, x, s, t)
                    }

                
    function calcMD5(str)
                    {
                    x 
    = str2blks_MD5(str);
                    a 
    = 1732584193;
                    b 
    = -271733879;
                    c 
    = -1732584194;
                    d 
    = 271733878;

                    
    for (i = 0; i < x.length; i += 16)
                        {
                        olda 
    = a;
                        oldb 
    = b;
                        oldc 
    = c;
                        oldd 
    = d;
                        a 
    = ff(a, b, c, d, x[i + 0], 7-680876936);
                        d 
    = ff(d, a, b, c, x[i + 1], 12-389564586);
                        c 
    = ff(c, d, a, b, x[i + 2], 17606105819);
                        b 
    = ff(b, c, d, a, x[i + 3], 22-1044525330);
                        a 
    = ff(a, b, c, d, x[i + 4], 7-176418897);
                        d 
    = ff(d, a, b, c, x[i + 5], 121200080426);
                        c 
    = ff(c, d, a, b, x[i + 6], 17-1473231341);
                        b 
    = ff(b, c, d, a, x[i + 7], 22-45705983);
                        a 
    = ff(a, b, c, d, x[i + 8], 71770035416);
                        d 
    = ff(d, a, b, c, x[i + 9], 12-1958414417);
                        c 
    = ff(c, d, a, b, x[i + 10], 17-42063);
                        b 
    = ff(b, c, d, a, x[i + 11], 22-1990404162);
                        a 
    = ff(a, b, c, d, x[i + 12], 71804603682);
                        d 
    = ff(d, a, b, c, x[i + 13], 12-40341101);
                        c 
    = ff(c, d, a, b, x[i + 14], 17-1502002290);
                        b 
    = ff(b, c, d, a, x[i + 15], 221236535329);
                        a 
    = gg(a, b, c, d, x[i + 1], 5-165796510);
                        d 
    = gg(d, a, b, c, x[i + 6], 9-1069501632);
                        c 
    = gg(c, d, a, b, x[i + 11], 14643717713);
                        b 
    = gg(b, c, d, a, x[i + 0], 20-373897302);
                        a 
    = gg(a, b, c, d, x[i + 5], 5-701558691);
                        d 
    = gg(d, a, b, c, x[i + 10], 938016083);
                        c 
    = gg(c, d, a, b, x[i + 15], 14-660478335);
                        b 
    = gg(b, c, d, a, x[i + 4], 20-405537848);
                        a 
    = gg(a, b, c, d, x[i + 9], 5568446438);
                        d 
    = gg(d, a, b, c, x[i + 14], 9-1019803690);
                        c 
    = gg(c, d, a, b, x[i + 3], 14-187363961);
                        b 
    = gg(b, c, d, a, x[i + 8], 201163531501);
                        a 
    = gg(a, b, c, d, x[i + 13], 5-1444681467);
                        d 
    = gg(d, a, b, c, x[i + 2], 9-51403784);
                        c 
    = gg(c, d, a, b, x[i + 7], 141735328473);
                        b 
    = gg(b, c, d, a, x[i + 12], 20-1926607734);
                        a 
    = hh(a, b, c, d, x[i + 5], 4-378558);
                        d 
    = hh(d, a, b, c, x[i + 8], 11-2022574463);
                        c 
    = hh(c, d, a, b, x[i + 11], 161839030562);
                        b 
    = hh(b, c, d, a, x[i + 14], 23-35309556);
                        a 
    = hh(a, b, c, d, x[i + 1], 4-1530992060);
                        d 
    = hh(d, a, b, c, x[i + 4], 111272893353);
                        c 
    = hh(c, d, a, b, x[i + 7], 16-155497632);
                        b 
    = hh(b, c, d, a, x[i + 10], 23-1094730640);
                        a 
    = hh(a, b, c, d, x[i + 13], 4681279174);
                        d 
    = hh(d, a, b, c, x[i + 0], 11-358537222);
                        c 
    = hh(c, d, a, b, x[i + 3], 16-722521979);
                        b 
    = hh(b, c, d, a, x[i + 6], 2376029189);
                        a 
    = hh(a, b, c, d, x[i + 9], 4-640364487);
                        d 
    = hh(d, a, b, c, x[i + 12], 11-421815835);


                        c 
    = hh(c, d, a, b, x[i + 15], 16530742520);
                        b 
    = hh(b, c, d, a, x[i + 2], 23-995338651);
                        a 
    = ii(a, b, c, d, x[i + 0], 6-198630844);
                        d 
    = ii(d, a, b, c, x[i + 7], 101126891415);
                        c 
    = ii(c, d, a, b, x[i + 14], 15-1416354905);
                        b 
    = ii(b, c, d, a, x[i + 5], 21-57434055);
                        a 
    = ii(a, b, c, d, x[i + 12], 61700485571);
                        d 
    = ii(d, a, b, c, x[i + 3], 10-1894986606);
                        c 
    = ii(c, d, a, b, x[i + 10], 15-1051523);
                        b 
    = ii(b, c, d, a, x[i + 1], 21-2054922799);
                        a 
    = ii(a, b, c, d, x[i + 8], 61873313359);
                        d 
    = ii(d, a, b, c, x[i + 15], 10-30611744);
                        c 
    = ii(c, d, a, b, x[i + 6], 15-1560198380);
                        b 
    = ii(b, c, d, a, x[i + 13], 211309151649);
                        a 
    = ii(a, b, c, d, x[i + 4], 6-145523070);
                        d 
    = ii(d, a, b, c, x[i + 11], 10-1120210379);
                        c 
    = ii(c, d, a, b, x[i + 2], 15718787259);
                        b 
    = ii(b, c, d, a, x[i + 9], 21-343485551);
                        a 
    = add(a, olda);
                        b 
    = add(b, oldb);
                        c 
    = add(c, oldc);
                        d 
    = add(d, oldd)
                        }

                    
    return rhex(a) + rhex(b) + rhex(c) + rhex(d)
                    }
    梦想还是要的,万一实现了呢!
  • 相关阅读:
    也URL Rewriter
    一窝蜂的分类信息
    再思考:分类信息的前途
    Ajax的一个体验:Ajax.NET A free library for the Microsoft .NET Framework
    EonerCMS——做一个仿桌面系统的CMS(十三)
    关于IE6、7、8下实现盒阴影的几个注意点
    EonerCMS——做一个仿桌面系统的CMS(十附最新源码)
    EonerCMS——做一个仿桌面系统的CMS(十一)
    用cloudzoom做一个仿淘宝的宝贝放大镜查看功能
    剑走偏锋——用css制作一个三角形箭头
  • 原文地址:https://www.cnblogs.com/cgli/p/2048869.html
Copyright © 2020-2023  润新知