dissertacao.pdf
dissertacao.pdf
dissertacao.pdf
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
C Implementation of Wiener’s attack<br />
rwi = {};<br />
i = 5;<br />
While[i < 14,<br />
nbits = 2∧ nbits = 2 i; ∧ nbits = 2 i; ∧i; p = RandomPrime[{2∧ (nbits/2 − 1), 2∧ p = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ p = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}];<br />
q = RandomPrime[{2∧ (nbits/2 − 1), 2∧ q = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ q = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}];<br />
While[q == p, q = RandomPrime[{2∧ (nbits/2 − 1), 2∧ While[q == p, q = RandomPrime[{2 (nbits/2) − 1}]];<br />
∧ (nbits/2 − 1), 2∧ While[q == p, q = RandomPrime[{2 (nbits/2) − 1}]];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}]];<br />
n = p ∗ q;<br />
lambdan = LCM[(p − 1), (q − 1)];<br />
d = RandomPrime[Floor[n∧ d = RandomPrime[Floor[n (1/4)]];<br />
∧ d = RandomPrime[Floor[n (1/4)]];<br />
∧ (1/4)]];<br />
While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n∧ While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n (1/4)]]; ];<br />
∧ While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n (1/4)]]; ];<br />
∧ (1/4)]]; ];<br />
g0 = n;<br />
k0 = 1;<br />
l = 1;<br />
While[d > p ∗ q/(2(p + q − 1)g0 ∗ k0),<br />
p = RandomPrime[{2∧ (nbits/2 − 1), 2∧ p = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ p = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}];<br />
q = RandomPrime[{2∧ (nbits/2 − 1), 2∧ q = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ q = RandomPrime[{2 (nbits/2) − 1}];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}];<br />
While[q == p, q = RandomPrime[{2∧ (nbits/2 − 1), 2∧ While[q == p, q = RandomPrime[{2 (nbits/2) − 1}]];<br />
∧ (nbits/2 − 1), 2∧ While[q == p, q = RandomPrime[{2 (nbits/2) − 1}]];<br />
∧ (nbits/2 − 1), 2∧ (nbits/2) − 1}]];<br />
n = p ∗ q;<br />
lambdan = LCM[(p − 1), (q − 1)];<br />
d = RandomPrime[Floor[n∧ d = RandomPrime[Floor[n (1/4)/l]];<br />
∧ d = RandomPrime[Floor[n (1/4)/l]];<br />
∧ (1/4)/l]];<br />
While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n∧ While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n (1/4)/l]]; ];<br />
∧ While[GCD[d, lambdan] = 1, d = RandomPrime[Floor[n (1/4)/l]]; ];<br />
∧ (1/4)/l]]; ];<br />
e = PowerMod[d, −1, lambdan];<br />
k = (e ∗ d − 1)/lambdan;<br />
g = GCD[p − 1, q − 1];<br />
g0 = g/GCD[g, k];<br />
k0 = k/GCD[k, g];<br />
l++;<br />
];<br />
rwi = Append[rwi, {nbits, Timing[<br />
conv = Convergents[e/n];<br />
candidates = Table[Floor[e/conv[[i]]], {i, 2, Length[conv]}];<br />
m = 0;<br />
64