使用javascript加密,无需任何外部库 [英] encryption using javascript without any external library

查看:65
本文介绍了使用javascript加密,无需任何外部库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在登录页面上,我在此检查中 emember me check 点击使用javascript在cookie中保存用户名和密码,但我想保存加密的密码cookie以便它可以保证。 (请不要使用任何外部JS库)

解决方案

 function  (出口){
use strict;

< span class =code-keyword> var XORCipher = {
encode: function (key,data){
data = xor_encrypt(key,data);
return b64_encode(data);
},
decode:函数(键,数据){
data = b64_decode(data);
return xor_decrypt(key,data) ;
}
};

var b64_table = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / =;

function b64_encode(d ata){
var o1,o2,o3,h1,h2,h3,h4,bits,r,i = 0 ,enc = ;
if (!data){ return 数据; }
{
o1 = data [i ++];
o2 = data [i ++];
o3 = data [i ++];
bits = o1<< 16 | o2<< 8 | O3;
h1 = bits>> 18 & 0x3F的;
h2 =位>> 12 & 0x3F的;
h3 = bits>> 6 & 0x3F的;
h4 =位& 0x3F的;
enc + = b64_table.charAt(h1)+ b64_table.charAt(h2)+ b64_table.charAt(h3)+ b64_table.charAt(h4);
} while (i< data.length);
r = data.length% 3 ;
return (r?enc.slice( 0 ,r - 3 ):enc)+ === .slice( r || 3 );
}

function b64_decode(data){
var o1,o2,o3,h1,h2,h3,h4,bits,i = 0 ,result = [];
if (!data){ return 数据; }
data + = ;
do {
h1 = b64_table.indexOf(data.charAt(i ++));
h2 = b64_table.indexOf(data.charAt(i ++));
h3 = b64_table.indexOf(data.charAt(i ++));
h4 = b64_table.indexOf(data.charAt(i ++));
bits = h1<< 18 | h2<< 12 | h3<< 6 | H4;
o1 = bits>> 16 & 0xFF的;
o2 =位>> 8 & 0xFF的;
o3 =位& 0xFF的;
result.push(o1);
if (h3!== 64 ){
result.push(o2 );
if (h4!== 64 ){
result.push(o3 );
}
}
} while (i< data.length);
返回结果;
}

function keyCharAt(key,i){
return key.charCodeAt( Math .floor(i%key.length));
}

function xor_encrypt(密钥,数据){
return _.map(data, function (c,i){
return c.charCodeAt( 0 )^ keyCharAt(key,i);
});
}

function xor_decrypt(密钥,数据){
return _.map(data, function (c,i){
return String .fromCharCode(c ^ keyCharAt(key,i));
})。join( );
}

exports.XORCipher = XORCipher;

})();





调用函数示例:



 XORCipher.encode(  test  foobar); 
XORCipher.decode( test EgocFhUX);


On Login page I made a remember me check on this check click saving user name and password in cookies using javascript but i want to save encrypted password cookies so that it can secure. (without using any external JS library please)

解决方案

(function(exports) {
  "use strict";
 
  var XORCipher = {
    encode: function(key, data) {
      data = xor_encrypt(key, data);
      return b64_encode(data);
    },
    decode: function(key, data) {
      data = b64_decode(data);
      return xor_decrypt(key, data);
    }
  };
 
  var b64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
  function b64_encode(data) {
    var o1, o2, o3, h1, h2, h3, h4, bits, r, i = 0, enc = "";
    if (!data) { return data; }
    do {
      o1 = data[i++];
      o2 = data[i++];
      o3 = data[i++];
      bits = o1 << 16 | o2 << 8 | o3;
      h1 = bits >> 18 & 0x3f;
      h2 = bits >> 12 & 0x3f;
      h3 = bits >> 6 & 0x3f;
      h4 = bits & 0x3f;
      enc += b64_table.charAt(h1) + b64_table.charAt(h2) + b64_table.charAt(h3) + b64_table.charAt(h4);
    } while (i < data.length);
    r = data.length % 3;
    return (r ? enc.slice(0, r - 3) : enc) + "===".slice(r || 3);
  }
 
  function b64_decode(data) {
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, result = [];
    if (!data) { return data; }
    data += "";
    do {
      h1 = b64_table.indexOf(data.charAt(i++));
      h2 = b64_table.indexOf(data.charAt(i++));
      h3 = b64_table.indexOf(data.charAt(i++));
      h4 = b64_table.indexOf(data.charAt(i++));
      bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
      o1 = bits >> 16 & 0xff;
      o2 = bits >> 8 & 0xff;
      o3 = bits & 0xff;
      result.push(o1);
      if (h3 !== 64) {
        result.push(o2);
        if (h4 !== 64) {
          result.push(o3);
        }
      }
    } while (i < data.length);
    return result;
  }
 
  function keyCharAt(key, i) {
    return key.charCodeAt( Math.floor(i % key.length) );
  }
 
  function xor_encrypt(key, data) {
    return _.map(data, function(c, i) {
      return c.charCodeAt(0) ^ keyCharAt(key, i);
    });
  }
 
  function xor_decrypt(key, data) {
    return _.map(data, function(c, i) {
      return String.fromCharCode( c ^ keyCharAt(key, i) );
    }).join("");
  }
 
  exports.XORCipher = XORCipher;
 
})(this);



Calling function example:

XORCipher.encode("test", "foobar");  
 XORCipher.decode("test", "EgocFhUX");  


这篇关于使用javascript加密,无需任何外部库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆