function passtokey(a){var b=stringtoints(a);var c={high:0,low:0};var d=new Array(16);var i=0,j;do{Blowfish.init(d);for(j=0;j<16;){c.high^=b[i];Blowfish.encrypt(c);d[j++]^=c.high;d[j++]^=c.low}}while(++i<b.length)return d}function encrypt_array(x,a){if(a.length!=16)return;Blowfish.init(a);var b=a[14];var c=a[15];var y={high:0,low:0};for(i=0;(i<x.length)||(x.length%6);i+=2){y.high=x[i];y.low=x[i+1];y.high^=b;y.low^=c;Blowfish.encrypt(y);b=y.high;c=y.low;x[i]=y.high;x[i+1]=y.low}}function _encrypt(a,b,c){var d=new String("");var e=new Array(2);var f=passtokey(a);e[0]=f[14];e[1]=f[15];var g=stringtoints(b);encrypt_array(g,f);var d=base64encode(g);var h=new String("");for(x=0;x<d.length;x++){h+=d.charAt(x)}c.text=h;c.key=base64encode(e)}function _decipher(a,b,c,d){var e=base64tobin(a);Blowfish.init(b);Blowfish.decrypt(e,c,d);var a=intstostring(e);var f=Base64.decode(a);return f}function decipher(a,b,c){var d=base64tobin(a);b=Base64.encode(b);var e=passtokey(b);if((d[0]==e[14])&&(d[1]==e[15])){return _decipher(c,e,d[0],d[1])}else{return null}}function encrypt(a,b){b=Base64.encode(b);a=Base64.encode(a);var c={text:"",key:""};_encrypt(a,b,c);return c}function decipher_without_validation(a, b){a = Base64.encode(a); var key = passtokey(a); return _decipher(b, key, key[14], key[15]);}
