function RSAKeyPair(_1,_2,_3){
this.e=biFromHex(_1);
this.d=biFromHex(_2);
this.m=biFromHex(_3);
this.chunkSize=2*biHighIndex(this.m);
this.radix=16;
this.barrett=new BarrettMu(this.m);
}
function twoDigit(n){
return (n<10?"0":"")+String(n);
}
function encryptedString(_5,s){
var a=new Array();
var sl=s.length;
var i=0;
while(i<sl){
a[i]=s.charCodeAt(i);
i++;
}
while(a.length%_5.chunkSize!=0){
a[i++]=0;
}
var al=a.length;
var _b="";
var j,k,block;
for(i=0;i<al;i+=_5.chunkSize){
block=new BigInt();
j=0;
for(k=i;k<i+_5.chunkSize;++j){
block.digits[j]=a[k++];
block.digits[j]+=a[k++]<<8;
}
var _d=_5.barrett.powMod(block,_5.e);
var _e=_5.radix==16?biToHex(_d):biToString(_d,_5.radix);
_b+=_e+" ";
}
return _b.substring(0,_b.length-1);
}
function decryptedString(_f,s){
var _11=s.split(" ");
var _12="";
var i,j,block;
for(i=0;i<_11.length;++i){
var bi;
if(_f.radix==16){
bi=biFromHex(_11[i]);
}else{
bi=biFromString(_11[i],_f.radix);
}
block=_f.barrett.powMod(bi,_f.d);
for(j=0;j<=biHighIndex(block);++j){
_12+=String.fromCharCode(block.digits[j]&255,block.digits[j]>>8);
}
}
if(_12.charCodeAt(_12.length-1)==0){
_12=_12.substring(0,_12.length-1);
}
return _12;
}


