UNPKG

pixelstream-cn

Version:

基于虚幻引擎的像素流平台

71 lines (63 loc) 1.93 kB
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; } }