class CryptoToolchain::Tools::SHA1LengthExtensionAttack
Attributes
add[R]
key_length[R]
mac[R]
message[R]
Public Class Methods
new(message: , add: , mac: , key_length: )
click to toggle source
# File lib/crypto_toolchain/tools/sha1_length_extension_attack.rb, line 5 def initialize(message: , add: , mac: , key_length: ) @message = message @mac = mac @add = add @key_length = key_length end
Public Instance Methods
execute()
click to toggle source
@return Array [msg, digest] Message that can be validated
# File lib/crypto_toolchain/tools/sha1_length_extension_attack.rb, line 13 def execute dummy_key = "A" * key_length padding = CryptoToolchain::Utilities::SHA1.padding(dummy_key + message) [ message + padding + add, CryptoToolchain::Utilities::SHA1.hexdigest(add, state: mac, append_length: (padding + message + dummy_key).length ) ] end