Advertisement
Guest User

yes

a guest
Oct 10th, 2015
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. P = 36413321723440003717;
  2. g = 18206660861720002080;
  3. A = 12246542873545750113;
  4. B = 5671660889183554788;
  5. (*Silver-Pohlig-Hellman Discrete Log Algortihm*)
  6.  
  7. rvec[q_, p_, z_] := Table[PowerMod[z, (i (q - 1))/p, q], {i, 0, p - 1}]
  8. bpos[wbs_, zgs_] := Flatten[Position[wbs, zgs] - 1][[1]]
  9. sph[q_, z_, g_, p_, alpha_] :=
  10. Module[{c}, qmo = q - 1; ainv = PowerMod[g, -1, q];
  11. Clear[c]; c = 0; rvals = rvec[q, p, g]; r = 0;
  12. While[(r += 1) <
  13. alpha + 1, {t = PowerMod[(z*(ainv)^c), (qmo/(p^(r))), q],
  14. c = c + bpos[rvals, t]*p^(r - 1)}];
  15. Return[{c, p^alpha}]]
  16.  
  17.  
  18.  
  19.  
  20. {q, z, h} = {P, A, g};
  21.  
  22. pp = FactorInteger[q - 1]
  23.  
  24. values = Table[
  25. sph[q, z, h, pp[[i, 1]], pp[[i, 2]]], {i, 1, Length[pp]}]
  26. (*Previous expression to be solved by CRT means x\[Equal]3 mod 4,x\
  27. \[Equal]8 mod 9 and x\[Equal]2 mod 5*)
  28.  
  29. ChineseRemainder[
  30. Flatten[Table[{values[[i, 1]]}, {i, 1, Length[values]}]],
  31. Flatten[Table[{values[[i, 2]]}, {i, 1, Length[values]}]]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement