public static RSAdecrypt ( uint m, uint d, uint p, uint q, uint u ) : uint[] | ||
m | uint | |
d | uint | |
p | uint | |
q | uint | |
u | uint | |
return | uint[] |
public static uint[] RSAdecrypt(uint[] m, uint[] d, uint[] p, uint[] q, uint[] u)
{
var xp = bmodexp(bmod(m, p), bmod(d, bsub(p, new uint[] { 1 })), p);
var xq = bmodexp(bmod(m, q), bmod(d, bsub(q, new uint[] { 1 })), q);
var t = bsub(xq, xp);
if (t.Length == 0)
{
t = bsub(xp, xq);
t = bmod(bmul(t, u), q);
t = bsub(q, t);
}
else
{
t = bmod(bmul(t, u), q);
}
return badd(bmul(t, p), xp);
}