Class: CryptoToolchain::Tools::MT19937StreamCipherSeedRecoverer
- Defined in:
- lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb
Instance Attribute Summary collapse
-
#ciphertext ⇒ Object
readonly
Returns the value of attribute ciphertext.
-
#known ⇒ Object
readonly
Returns the value of attribute known.
Class Method Summary collapse
- .recover_from(ciphertext:, seed:) ⇒ Object
- .valid_token?(tok, start: Time.now.to_i - 5, finish: Time.now.to_i) ⇒ Boolean (also: valid_token)
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(ciphertext:, known:) ⇒ MT19937StreamCipherSeedRecoverer
constructor
A new instance of MT19937StreamCipherSeedRecoverer.
Constructor Details
#initialize(ciphertext:, known:) ⇒ MT19937StreamCipherSeedRecoverer
Returns a new instance of MT19937StreamCipherSeedRecoverer.
21 22 23 24 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 21 def initialize(ciphertext: , known: ) @ciphertext = ciphertext @known = known end |
Instance Attribute Details
#ciphertext ⇒ Object (readonly)
Returns the value of attribute ciphertext.
36 37 38 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 36 def ciphertext @ciphertext end |
#known ⇒ Object (readonly)
Returns the value of attribute known.
36 37 38 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 36 def known @known end |
Class Method Details
.recover_from(ciphertext:, seed:) ⇒ Object
5 6 7 8 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 5 def recover_from(ciphertext: , seed: ) stream = CryptoToolchain::BlackBoxes::MT19937StreamCipher.new(ciphertext, seed: seed) stream.decrypt(ciphertext) end |
.valid_token?(tok, start: Time.now.to_i - 5, finish: Time.now.to_i) ⇒ Boolean Also known as: valid_token
10 11 12 13 14 15 16 17 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 10 def valid_token?(tok, start: Time.now.to_i - 5, finish: Time.now.to_i) (start..finish).each do |seed| if tok == CryptoToolchain::BlackBoxes::MT19937StreamCipher.generate_token(seed: seed) return true end end false end |
Instance Method Details
#execute ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/crypto_toolchain/tools/mt_19937_stream_cipher_seed_recoverer.rb', line 26 def execute (0..CryptoToolchain::BlackBoxes::MT19937StreamCipher::MAX_SEED).each do |seed| cipher = CryptoToolchain::BlackBoxes::MT19937StreamCipher.new(ciphertext, seed: seed) if cipher.decrypt(ciphertext).include?(known) return seed end end raise RuntimeError.new, "Could not recover seed" end |