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); }