pixelstream-cn
Version:
基于虚幻引擎的像素流平台
71 lines (63 loc) • 1.93 kB
JavaScript
export default class StringEncodeDecode{
constructor(key){
this.key=key;
}
encode(string){
return this.base64(this.binary2Str(this.encodeBinary(this.str2binary(string),this.key)));
}
decode(string){
return this.binary2Str(this.encodeBinary(this.str2binary(this.unbase64(string)),this.key));
}
str2binary(str){
var result = [];
var list = str.split("");
for(var i=0;i<list.length;i++){
if(i != 0){
result.push(" ");
}
var item = list[i];
var binaryStr = item.charCodeAt().toString(2);
result.push(binaryStr);
}
return result.join("");
}
binary2Str(binary){
var result = [];
var list = binary.split(" ");
for(var i=0;i<list.length;i++){
var item = list[i];
var asciiCode = parseInt(item,2);
var charValue = String.fromCharCode(asciiCode);
result.push(charValue);
}
return result.join("");
}
encodeBinary(binary,key){
let binarys = binary.split("");
let keyBinary = this.str2binary(key);
keyBinary=keyBinary.replace(/ /g,"");
let skip=true;
for(let i in binarys){
if(skip){
skip=false;
continue;
}
if(binarys[i]=="1" || binarys[i]=="0"){
let key = keyBinary.substr((i%keyBinary.length),1);
if(key=="1"){
binarys[i]=(binarys[i]=="1" ? "0" : "1");
}
}else{
skip=true;
}
}
let encodeBinary = binarys.join("");
return encodeBinary;
}
base64(string){
return string;
}
unbase64(string){
return string;
}
}