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);
}
相關文章
相關標籤/搜索