您的位置:首页 > Web前端 > JavaScript

JS 加密算法带秘钥

2017-11-15 00:00 295 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息