A modular binomial problem is a mathematical problem in which a binomial expression of the form :
x = ( a + b ) e ā m o d ā N x = (a + b)^e \bmod N x = ( a + b ) e mod N where :
e is a positive integer (the exponent),
and N is a positive integer (the modulus).
Searching p and q
The modular binomial problem can have the following form :
c 1 = ( a 1 ā
p + b 1 ā
q ) e 1 ā m o d ā N c 2 = ( a 2 ā
p + b 2 ā
q ) e 2 ā m o d ā N c_1 = (a_1 \cdot p + b_1 \cdot q)^{e_1} \bmod N\\ c_2 = (a_2 \cdot p + b_2 \cdot q)^{e_2} \bmod N\\ c 1 ā = ( a 1 ā ā
p + b 1 ā ā
q ) e 1 ā mod N c 2 ā = ( a 2 ā ā
p + b 2 ā ā
q ) e 2 ā mod N Given the value of c1, c2 a1, a2, e1, e2 and N
and where N = p*q
it's possible to retrieve p and q as follow :
c 1 e 2 = ( a 1 ā
p + b 1 ā
q ) e 1 ā
e 2 ā m o d ā N c 1 e 2 = ( a 1 ā
p ) e 1 ā
e 2 + ( b 1 ā
q ) e 1 ā
e 2 ā m o d ā N a 1 ā e 1 ā
e 2 ā
c 1 e 2 = a 1 ā e 1 ā
e 2 ā
( a 1 ā
p ) e 1 ā
e 2 + a 1 ā e 1 ā
e 2 ā
( b 1 ā
q ) e 1 ā
e 2 ā m o d ā N a 1 ā e 1 ā
e 2 ā
c 1 e 2 = p e 1 ā
e 2 + a 1 ā e 1 ā
e 2 ā
( b 1 ā
q ) e 1 ā
e 2 ā m o d ā N c_1^{e_2} = (a_1 \cdot p + b_1 \cdot q)^{e_1 \cdot e_2} \bmod N\\ c_1^{e_2} = (a_1 \cdot p)^{e_1 \cdot e_2} + (b_1 \cdot q)^{e_1 \cdot e_2} \bmod N\\ a_1^{-e_1 \cdot e_2} \cdot c_1^{e_2} = a_1^{-e_1 \cdot e_2} \cdot (a_1 \cdot p)^{e_1 \cdot e_2} + a_1^{-e_1 \cdot e_2} \cdot (b_1 \cdot q)^{e_1 \cdot e_2} \bmod N\\ a_1^{-e_1 \cdot e_2} \cdot c_1^{e_2} = p^{e_1 \cdot e_2} + a_1^{-e_1 \cdot e_2} \cdot(b_1 \cdot q)^{e_1 \cdot e_2} \bmod N\\ c 1 e 2 ā ā = ( a 1 ā ā
p + b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N c 1 e 2 ā ā = ( a 1 ā ā
p ) e 1 ā ā
e 2 ā + ( b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N a 1 ā e 1 ā ā
e 2 ā ā ā
c 1 e 2 ā ā = a 1 ā e 1 ā ā
e 2 ā ā ā
( a 1 ā ā
p ) e 1 ā ā
e 2 ā + a 1 ā e 1 ā ā
e 2 ā ā ā
( b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N a 1 ā e 1 ā ā
e 2 ā ā ā
c 1 e 2 ā ā = p e 1 ā ā
e 2 ā + a 1 ā e 1 ā ā
e 2 ā ā ā
( b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N Make the same with c2
c 2 e 1 = ( a 2 ā
p + b 2 ā
q ) e 2 ā
e 1 ā m o d ā N c 2 e 1 = ( a 2 ā
p ) e 2 ā
e 1 + ( b 2 ā
q ) e 2 ā
e 1 ā m o d ā N a 2 ā e 2 ā
e 1 ā
c 2 e 1 = a 2 ā e 2 ā
e 1 ā
( a 2 ā
p ) e 2 ā
e 1 + a 2 ā e 2 ā
e 1 ā
( b 2 ā
q ) e 2 ā
e 1 ā m o d ā N a 2 ā e 2 ā
e 1 ā
c 2 e 1 = p e 2 ā
e 1 + a 2 ā e 2 ā
e 1 ā
( b 2 ā
q ) e 2 ā
e 1 ā m o d ā N c_2^{e_1} = (a_2 \cdot p + b_2 \cdot q)^{e_2 \cdot e_1} \bmod N\\ c_2^{e_1} = (a_2 \cdot p)^{e_2 \cdot e_1} + (b_2 \cdot q)^{e_2 \cdot e_1} \bmod N\\ a_2^{-e_2 \cdot e_1} \cdot c_2^{e_1} = a_2^{-e_2 \cdot e_1} \cdot (a_2 \cdot p)^{e_2 \cdot e_1} + a_2^{-e_2 \cdot e_1} \cdot (b_2 \cdot q)^{e_2 \cdot e_1} \bmod N\\ a_2^{-e_2 \cdot e_1} \cdot c_2^{e_1} = p^{e_2 \cdot e_1} + a_2^{-e_2 \cdot e_1} \cdot (b_2 \cdot q)^{e_2 \cdot e_1} \bmod N\\ c 2 e 1 ā ā = ( a 2 ā ā
p + b 2 ā ā
q ) e 2 ā ā
e 1 ā mod N c 2 e 1 ā ā = ( a 2 ā ā
p ) e 2 ā ā
e 1 ā + ( b 2 ā ā
q ) e 2 ā ā
e 1 ā mod N a 2 ā e 2 ā ā
e 1 ā ā ā
c 2 e 1 ā ā = a 2 ā e 2 ā ā
e 1 ā ā ā
( a 2 ā ā
p ) e 2 ā ā
e 1 ā + a 2 ā e 2 ā ā
e 1 ā ā ā
( b 2 ā ā
q ) e 2 ā ā
e 1 ā mod N a 2 ā e 2 ā ā
e 1 ā ā ā
c 2 e 1 ā ā = p e 2 ā ā
e 1 ā + a 2 ā e 2 ā ā
e 1 ā ā ā
( b 2 ā ā
q ) e 2 ā ā
e 1 ā mod N Then
a 2 ā e 2 ā
e 1 ā
c 2 e 1 ā a 1 ā e 1 ā
e 2 ā
c 1 e 2 = p e 2 ā
e 1 + a 2 ā e 2 ā
e 1 ā
( b 2 ā
q ) e 2 ā
e 1 ā p e 1 ā
e 2 ā a 1 ā e 1 ā
e 2 ā
( b 1 ā
q ) e 1 ā
e 2 ā m o d ā N = a 2 ā e 2 ā
e 1 ā
( b 2 ā
q ) e 2 ā
e 1 ā a 1 ā e 1 ā
e 2 ā
( b 1 ā
q ) e 1 ā
e 2 ā m o d ā N a_2^{-e_2 \cdot e_1} \cdot c_2^{e_1} - a_1^{-e_1 \cdot e_2} \cdot c_1^{e_2} = p^{e_2 \cdot e_1} + a_2^{-e_2 \cdot e_1} \cdot (b_2 \cdot q)^{e_2 \cdot e_1} - p^{e_1 \cdot e_2} - a_1^{-e_1 \cdot e_2} \cdot(b_1 \cdot q)^{e_1 \cdot e_2} \bmod N \\= a_2^{-e_2 \cdot e_1} \cdot (b_2 \cdot q)^{e_2 \cdot e_1} - a_1^{-e_1 \cdot e_2} \cdot(b_1 \cdot q)^{e_1 \cdot e_2} \bmod N a 2 ā e 2 ā ā
e 1 ā ā ā
c 2 e 1 ā ā ā a 1 ā e 1 ā ā
e 2 ā ā ā
c 1 e 2 ā ā = p e 2 ā ā
e 1 ā + a 2 ā e 2 ā ā
e 1 ā ā ā
( b 2 ā ā
q ) e 2 ā ā
e 1 ā ā p e 1 ā ā
e 2 ā ā a 1 ā e 1 ā ā
e 2 ā ā ā
( b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N = a 2 ā e 2 ā ā
e 1 ā ā ā
( b 2 ā ā
q ) e 2 ā ā
e 1 ā ā a 1 ā e 1 ā ā
e 2 ā ā ā
( b 1 ā ā
q ) e 1 ā ā
e 2 ā mod N So, q = gcd(pow(a2,(-e2 * e1),N) * pow(c2, e1, N) - pow(a1, (-e1 * e2), N) * pow(c1, e2, N), N)
Do the same to get p
Last updated 3 months ago