def calculate_prefix_length
      duplications = 2

      (0..(block_size() -1)).each do |pad_length|
        # construct a message like this:
        # 1 <unknown-prefix>|| prefix_pad * DUMMY
        # 2 DUMMY * (block_size)
        # 3 DUMMY * (block_size)
        # 4 - (n-1) Target Message
        # 5: target_end + pkcs#7 padding
        malicious_msg = (PREFIX_PAD_DUMMY * pad_length) + (DUMMY * (block_size * duplications)) 
        ciphertext = @oracle.encipher(malicious_msg)
        
        return pad_length if block_is_left_aligned?(ciphertext,duplications)
      end
    end
def calculate_prefix_length
      duplications = 2

      (0..(block_size() -1)).each do |pad_length|
        # construct a message like this:
        # 1 <unknown-prefix>|| prefix_pad * DUMMY
        # 2 DUMMY * (block_size)
        # 3 DUMMY * (block_size)
        # 4 - (n-1) Target Message
        # 5: target_end + pkcs#7 padding
        malicious_msg = (PREFIX_PAD_DUMMY * pad_length) + (DUMMY * (block_size * duplications)) 
        ciphertext = @oracle.encipher(malicious_msg)
        
        return pad_length if block_is_left_aligned?(ciphertext,duplications)
      end
    end
in case of a prefix some bytes of your 2 duplicate / redundant chars
 will be part of the first block, thus need to add enough extra chars
 to fill the first block containinig the random + unknown prefix with
 dummy chars to align it to the block length.