Skip to content

Instantly share code, notes, and snippets.

@vrymel
Forked from gustavohenrique/pre-sharedkey-aes.py
Created August 3, 2019 07:34
Show Gist options
  • Save vrymel/7270afd293b0f6eba733ee47a1db9c18 to your computer and use it in GitHub Desktop.
Save vrymel/7270afd293b0f6eba733ee47a1db9c18 to your computer and use it in GitHub Desktop.
An example using Python3 and AES criptography
import sys
import base64
from Crypto.Cipher import AES
class AESCipher(object):
def __init__(self, key):
self.bs = 16
self.cipher = AES.new(key, AES.MODE_ECB)
def encrypt(self, raw):
raw = self._pad(raw)
encrypted = self.cipher.encrypt(raw)
encoded = base64.b64encode(encrypted)
return str(encoded, 'utf-8')
def decrypt(self, raw):
decoded = base64.b64decode(raw)
decrypted = self.cipher.decrypt(decoded)
return str(self._unpad(decrypted), 'utf-8')
def _pad(self, s):
return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
if __name__ == '__main__':
key = '`?.F(fHbN6XK|j!t'
cipher = AESCipher(key)
plaintext = '542#1504891440039'
encrypted = cipher.encrypt(plaintext)
print('Encrypted: %s' % encrypted)
ciphertext = '5bgJqIqFuT8ACuvT1dz2Bj5kx9ZAIkODHWRzuLlfYV0='
assert encrypted == ciphertext
decrypted = cipher.decrypt(encrypted)
print('Decrypted: %s' % decrypted)
assert decrypted == plaintext
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment