bits=4096;

e=3;

p1=;

q1=;

modulus1=p1*q1;

p2=;

q2=;

modulus2=p2*q2;

p3=;

q3=;

modulus3=p3*q3;

m=123456789^250;

{m<modulus1,m>p1,m>q1}

c1=PowerMod[m,e,modulus1];

c2=PowerMod[m,e,modulus2];

c3=PowerMod[m,e,modulus3];

GCD[c1,c2,c3]

tmp=ChineseRemainder[{c1,c2,c3},{modulus1,modulus2,modulus3}];

recovered=Surd[tmp,e];

m==recovered

(* only two recipients? don't work *)
tmp=ChineseRemainder[{c2,c3},{modulus2,modulus3}];

recovered=Surd[tmp,e];

tmp==recovered