Aes Key Generation In Python

 

AES is a symmetric block cipher where a single key is used for both encryption and decryption process. The input and output for the AES algorithm each consist of sequences of 128 bits. The key used in this algorithm consists of 128, 192, or 256 bits. AES operates on 8-bit bytes. AES key expansion consists of several primitive operations: Rotate – takes a 4-byte word and rotates everything one byte to the left, e.g. Rotate(1,2,3,4) → 2, 3, 4, 1 SubBytes – each byte of a word is substituted with the value in the S-Box whose index is the value of the original byte.

an example of symmetric encryption in python using a single known secret key - utilizes AES from PyCrypto library
AES_example.py
Aes

Aes Key Generation In Python Pdf

# Inspired from https://pythonprogramming.net/encryption-and-decryption-in-python-code-example-with-explanation/
# PyCrypto docs available at https://www.dlitz.net/software/pycrypto/api/2.6/
fromCrypto.CipherimportAES
importbase64, os
defgenerate_secret_key_for_AES_cipher():
# AES key length must be either 16, 24, or 32 bytes long
AES_key_length=16# use larger value in production
# generate a random secret key with the decided key length
# this secret key will be used to create AES cipher for encryption/decryption
secret_key=os.urandom(AES_key_length)
# encode this secret key for storing safely in database
encoded_secret_key=base64.b64encode(secret_key)
returnencoded_secret_key
defencrypt_message(private_msg, encoded_secret_key, padding_character):
# decode the encoded secret key
secret_key=base64.b64decode(encoded_secret_key)
# use the decoded secret key to create a AES cipher
cipher=AES.new(secret_key)
# pad the private_msg
# because AES encryption requires the length of the msg to be a multiple of 16
padded_private_msg=private_msg+ (padding_character* ((16-len(private_msg)) %16))
# use the cipher to encrypt the padded message
encrypted_msg=cipher.encrypt(padded_private_msg)
# encode the encrypted msg for storing safely in the database
encoded_encrypted_msg=base64.b64encode(encrypted_msg)
# return encoded encrypted message
returnencoded_encrypted_msg
defdecrypt_message(encoded_encrypted_msg, encoded_secret_key, padding_character):
# decode the encoded encrypted message and encoded secret key
secret_key=base64.b64decode(encoded_secret_key)
encrypted_msg=base64.b64decode(encoded_encrypted_msg)
# use the decoded secret key to create a AES cipher
cipher=AES.new(secret_key)
# use the cipher to decrypt the encrypted message
decrypted_msg=cipher.decrypt(encrypted_msg)
# unpad the encrypted message
unpadded_private_msg=decrypted_msg.rstrip(padding_character)
# return a decrypted original private message
returnunpadded_private_msg
####### BEGIN HERE #######
private_msg=''
Lorem ipsum dolor sit amet, malis recteque posidonium ea sit, te vis meliore verterem. Duis movet comprehensam eam ex, te mea possim luptatum gloriatur. Modus summo epicuri eu nec. Ex placerat complectitur eos.
''
padding_character='{'
secret_key=generate_secret_key_for_AES_cipher()
encrypted_msg=encrypt_message(private_msg, secret_key, padding_character)
decrypted_msg=decrypt_message(encrypted_msg, secret_key, padding_character)
print' Secret Key: %s - (%d)'% (secret_key, len(secret_key))
print'Encrypted Msg: %s - (%d)'% (encrypted_msg, len(encrypted_msg))
print'Decrypted Msg: %s - (%d)'% (decrypted_msg, len(decrypted_msg))

Aes Python Crypto

commented Jan 18, 2019
edited

See also https://gist.github.com/btoueg/f71b62f456550da42ea9f4a4bd907d21 for an example using cryptography Battlefield 2142 cd key generator download.

Python Aes Key Generator

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment