Created
January 26, 2023 06:46
-
-
Save haris1998-web/018698ee722b96bf28bbe29b2e982336 to your computer and use it in GitHub Desktop.
Revisions
-
haris1998-web created this gist
Jan 26, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,35 @@ ## Install these packages ## pycryptodome==3.16.0 ## pycryptodomex==3.16.0 import base64 import hashlib from Cryptodome import Random from Cryptodome.Cipher import AES class AESCipher: bs = AES.block_size def __init__(self, key): self.key = hashlib.sha256(key.encode()).digest() def encrypt(self, message): message = self._pad(message) iv = Random.new().read(AES.block_size) cipher = AES.new(self.key, AES.MODE_CBC, iv) return base64.b64encode(iv + cipher.encrypt(message.encode('utf-8'))).decode('utf-8') def decrypt(self, enc): enc = base64.b64decode(enc) iv = enc[:AES.block_size] cipher = AES.new(self.key, AES.MODE_CBC, iv) return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8') def _pad(self, s): return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs) @staticmethod def _unpad(s): return s[:-ord(s[len(s) - 1:])]