class CryptoToolchain::Tools::RSAUnpaddedMessageRecoveryAttack
Attributes
oracle[R]
s[R]
Public Class Methods
new(oracle: , s: 2)
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 7 def initialize(oracle: , s: 2) @oracle = oracle @s = s end
Public Instance Methods
execute(ciphertext)
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 12 def execute(ciphertext) plaintext( p_prime( c_prime( ciphertext.to_number ) ) ) end
Private Instance Methods
c_prime(c)
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 32 def c_prime(c) (s.modpow(e, n) * c) % n end
e()
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 24 def e oracle.keypair.e end
n()
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 28 def n oracle.keypair.public_key.n end
p_prime(_c_prime)
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 36 def p_prime(_c_prime) oracle.execute( _c_prime.to_bin_string ).to_number end
plaintext(_p_prime)
click to toggle source
# File lib/crypto_toolchain/tools/rsa_unpadded_message_recovery_attack.rb, line 42 def plaintext(_p_prime) ( (_p_prime * s.invmod(n)) % n ).to_bin_string end