JS 加密算法带秘钥


var mkey = "姚林tao";
var text = "wo说了一段话。!~";
var jiamied = encrypted(mkey,text);
var jiemied = decrypted(mkey,jiamied);

console.error(jiamied);
console.error(jiemied);
 
/**
 * 根据key加密
 */
function encrypted(key,str){
   //秘钥-- ^ 运算后,为补码。  秘钥会转化成为1 0 二进制数。
  var binaryKey = str2Binary(key);
  var total2str = "";
  for (var i = 0; i < str.length; i++) {
        var num10 = str.charCodeAt(i)^binaryKey;  ///< 以10进制的整数返回 某个字符 的unicode编码
        var str2 = num10.toString(2);   ///< 将10进制数字 转换成 2进制字符串
        if( total2str == "" ){
          total2str = str2;
        }else{
          total2str = total2str + " " + str2;
        }
  }
  // console.log("加密后:" + total2str);
  return total2str;
}
/**
 * 根据key解密
 */
function decrypted(key,str){
   //秘钥-- ^ 运算后,为补码。  秘钥会转化成为1 0 二进制数。
  var binaryKey = str2Binary(key);
  var goal = "";
  var arr = str.split(' ');
  for(var i=0; i < arr.length; i++){
    var str2 = arr[i];
    var num10 = parseInt(str2, 2); ///< 2进制字符串转换成 10进制的数字
    goal += String.fromCharCode(num10^binaryKey); ///< 将10进制的unicode编码, 转换成对应的unicode字符

  }
  // console.log('解密后:'+ goal );
  return goal;
}

/**
 * 字符串转二进制
 */
function str2Binary(str){
  var total2str = "";
  for (var i = 0; i < str.length; i++) {
        var num10 = str.charCodeAt(i);  ///< 以10进制的整数返回 某个字符 的unicode编码
        var str2 = num10.toString(2);   ///< 将10进制数字 转换成 2进制字符串
        if( total2str == "" ){
          total2str = str2;
        }else{
          total2str = total2str + "" + str2;
        }
  }
  return parseInt(total2str, 2);
}

 

转载于:https://my.oschina.net/u/2416491/blog/1573805

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值