csqd
Version:
Chroma Squad Data utils
58 lines (45 loc) • 1.08 kB
JavaScript
var fs = require('fs');
var rot = require('rot');
var utf8 = require('utf8');
var cipher = 'vOSnn95Lo8C1fDPMYKIUvrLcYZ8G699o';
function decrypt(string){
return crypt(string, -1);
}
function encrypt(string){
return crypt(string, 1);
}
function crypt(string, decode){
if(!decode){
throw "pass decode for encrypt or decrypt";
}
var ret = "";
string.split('').forEach(function(character, i){
var charCode = character.charCodeAt(0);
var rotc = rot(cipher, 13);
var rotSub = rotc.substr(i%32, 1);
var wtf = decode * rotSub.charCodeAt(0);
ret += String.fromCharCode(charCode + wtf);
});
return ret;
}
function csqdToJson(csqd){
var ret = {};
csqd.split('#').forEach(function(pair){
var kvs = pair.split('!');
if(kvs.length > 1){
ret[decrypt(kvs[0])] = decrypt(kvs[1]);
}
});
return ret;
}
function jsonToCsqd(json){
var ret = "";
for(key in json){
ret += (encrypt(key) + "!" + encrypt(String(json[key])) + "#" );
}
return ret;
}
module.exports = {
toJSON: csqdToJson,
fromJSON: jsonToCsqd
};