Exemple #1
0
 def _get_candidate_block_from(self, block):
     integer = BytesToInt(block).value()
     root = NthRoot(self.e).value(integer)
     next_power = (root + 1)**self.e
     candidate_block = self._to_bytes(next_power)
     return root + 1, LeftPadder(candidate_block).value(self.n_size,
                                                        char='\x00')
Exemple #2
0
 def _decode(self, string):
     bin_string = str()
     string = string.strip()
     for char in string:
         if char == '=':
             break
         index = self._index_of(char)
         if index is None:
             continue
         bin_index = IntToBinary(index).value()
         padded_bin_index = LeftPadder(bin_index).value(6)
         bin_string += padded_bin_index
     bin_string = self._remove_base64_padding(string, bin_string)
     return bin_string
Exemple #3
0
 def value(self, size=None):
     hex_string = IntToHex(self.integer).value()
     int_bytes = HexToBytes(hex_string).value()
     if size is not None and len(int_bytes) < size:
         int_bytes = LeftPadder(int_bytes).value(size, char='\0')
     return int_bytes 
Exemple #4
0
def _ensure_length_multiple_of(string, value):
    length = len(string)
    if length % value != 0:
        pad_size = int(value*math.ceil(length/float(value)))
        string = LeftPadder(string).value(pad_size)
    return string
Exemple #5
0
 def _to_bin(self, char):
     bin_string = bin(ord(char))[2:]
     return LeftPadder(bin_string).value(8)
Exemple #6
0
 def _decrypt(self, signature):
     decrypted_block = self.rsa.encrypt(signature)
     return LeftPadder(decrypted_block).value(self.n_size, char='\0')
Exemple #7
0
 def has_valid_padding(self, ciphertext):
     plaintext = self.rsa.decrypt(ciphertext)
     plaintext = LeftPadder(plaintext).value(self.n_size, char='\0')
     return plaintext[0] == '\x00' and plaintext[1] == '\x02'
Exemple #8
0
 def _from_int(self, integer):
     converter = self._from_int_converter() 
     string = converter(integer).value()
     length = max(map(len, self.strings))
     pad_char = self._pad_char()
     return LeftPadder(string).value(length, char=pad_char)