Advertisement
t_a_w

RSA CR3

Feb 4th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.41 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require "openssl"
  4.  
  5. p=0xa6055ec186de51800ddd6fcbf0192384ff42d707a55f57af4fcfb0d1dc7bd97055e8275cd4b78ec63c5d592f567c66393a061324aa2e6a8d8fc2a910cbee1ed9
  6.  
  7. q=0xfa0f9463ea0a93b929c099320d31c277e0b0dbc65b189ed76124f5a1218f5d91fd0102a4c8de11f28be5e4d0ae91ab319f4537e97ed74bc663e972a4a9119307
  8.  
  9. e=0x6d1fdab4ce3217b3fc32c9ed480a31d067fd57d93a9ab52b472dc393ab7852fbcb11abbebfd6aaae8032db1316dc22d3f7c3d631e24df13ef23d3b381a1c3e04abcc745d402ee3a031ac2718fae63b240837b4f657f29ca4702da9af22a3a019d68904a969ddb01bcf941df70af042f4fae5cbeb9c2151b324f387e525094c41
  10.  
  11. c=0x7fe1a4f743675d1987d25d38111fae0f78bbea6852cba5beda47db76d119a3efe24cb04b9449f53becd43b0b46e269826a983f832abb53b7a7e24a43ad15378344ed5c20f51e268186d24c76050c1e73647523bd5f91d9b6ad3e86bbf9126588b1dee21e6997372e36c3e74284734748891829665086e0dc523ed23c386bb520
  12.  
  13. def extended_gcd(a, b)
  14.   last_remainder, remainder = a.abs, b.abs
  15.   x, last_x, y, last_y = 0, 1, 1, 0
  16.   while remainder != 0
  17.     last_remainder, (quotient, remainder) = remainder, last_remainder.divmod(remainder)
  18.     x, last_x = last_x - quotient*x, x
  19.     y, last_y = last_y - quotient*y, y
  20.   end
  21.  
  22.   return last_remainder, last_x * (a < 0 ? -1 : 1)
  23. end
  24.  
  25. def invmod(e, et)
  26.   g, x = extended_gcd(e, et)
  27.   if g != 1
  28.     raise 'The maths are broken!'
  29.   end
  30.   x % et
  31. end
  32.  
  33. d = invmod(e, (p-1) * (q-1))
  34. p c.to_bn.mod_exp(d, p*q).to_i.to_s(16).scan(/../).map{|x| x.to_i(16).chr}.join
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement