def encrypt(self, raw): if len(raw) % self.bs != 0: raw = self._pad(raw) cipher = Encrypter(AESModeOfOperationECB(self.key), padding=PADDING_NONE) ciphertext = cipher.feed(raw) + cipher.feed() return base64.b64encode(ciphertext)
def decrypt(self, enc): """ Decryption algorithm. Decrypt raw message only if length > 2. Padding is not working for lenght less than 2. """ decrypted = "{}" print("Decrypting", enc) try: if enc and len(enc) > 2: enc = base64.b64decode(enc) print("Encrypted string: ", enc) if len(enc) % BS != 0: enc = self._pad(enc) cipher = Decrypter(AESModeOfOperationECB(self._key), padding=PADDING_NONE) decrypted = cipher.feed(enc) + cipher.feed() return decrypted.decode("utf8").rstrip(chr(0)) return decrypted except UnicodeDecodeError as err: _LOGGER.error(f"Unable to decrypt: {decrypted} with error: {err}") print("CAN'T DECRYPT") except Exception as err: print("ERROR ENCRYPTION")
def decrypt(self, enc): # trying to decrypt empty data fails if not enc: return "" enc = base64.b64decode(enc) cipher = Decrypter(AESModeOfOperationECB(self.key), padding=PADDING_NONE) decrypted = cipher.feed(enc) + cipher.feed() return decrypted.decode("utf8").rstrip(chr(0))
def decrypt(self, enc): # trying to decrypt empty data fails if not enc: return "" enc = base64.b64decode(enc) cipher = Decrypter(AESModeOfOperationECB(self.key), padding=PADDING_NONE) decrypted = cipher.feed(enc) + cipher.feed() try: r = decrypted.decode("utf8").rstrip(chr(0)) except UnicodeDecodeError as e: raise SystemError("Decryption error (%s). Wrong password?", e) return r
def decrypt(self, enc): """ Decryption algorithm. Decrypt raw message only if length > 2. Padding is not working for lenght less than 2. """ try: if enc and len(enc) > 2: enc = base64.b64decode(enc) if len(enc) % self._bs != 0: enc = self._pad(enc) cipher = Decrypter(AESModeOfOperationECB(self._key), padding=PADDING_NONE) decrypted = cipher.feed(enc) + cipher.feed() return decrypted.decode("utf8").rstrip(chr(0)) return "{}" except Exception as err: raise EncryptionException(f"Unable to decrypt: {err}")
def decrypt(self, enc): """ Decryption algorithm. Decrypt raw message only if length > 2. Padding is not working for lenght less than 2. """ try: if enc and len(enc) > 2: enc = base64.b64decode(enc) if len(enc) % self._bs != 0: enc = self._pad(enc) print("added padding by ourselves") else: print("padding already", len(enc) % self._bs) print(enc) cipher = Decrypter(AESModeOfOperationECB(self._key), padding=PADDING_NONE) decrypted = cipher.feed(enc) + cipher.feed() print(decrypted) return decrypted.decode("utf8").rstrip(chr(0)) return "{}" except Exception as err: pass
def decrypt_ipv6_bytes_key(key: bytes, ip: IPv6Address) -> IPv6Address: return IPv6Address(AESModeOfOperationECB(key).decrypt(ip.packed))