module Rmega::Crypto::Rsa
Public Instance Methods
powm(b, p, m)
click to toggle source
# File lib/rmega/crypto/rsa.rb, line 4 def powm(b, p, m) if p == 1 b % m elsif (p & 0x1) == 0 t = powm(b, p >> 1, m) (t * t) % m else (b * powm(b, p-1, m)) % m end end
rsa_decrypt(m, pqdu)
click to toggle source
# File lib/rmega/crypto/rsa.rb, line 15 def rsa_decrypt(m, pqdu) p, q, d, u = pqdu if p && q && u m1 = powm(m, d % (p - 1), p) m2 = powm(m, d % (q - 1), q) h = m2 - m1 h = h + q if h < 0 h = h * u % q h * p + m1 else pow_m(m, d, p * q) end end