Example #1
0
    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")
Example #3
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()
     return decrypted.decode("utf8").rstrip(chr(0))
Example #4
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
Example #5
0
    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
Example #7
0
def decrypt_ipv6_bytes_key(key: bytes, ip: IPv6Address) -> IPv6Address:
    return IPv6Address(AESModeOfOperationECB(key).decrypt(ip.packed))