Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Advanced Encryption Standard (AES) NumPy implementation

Project description


Advanced Encryption Standard (AES) NumPy implementation.

Warning: incomplete & not yet suitable for production use. See the "Caution" section below.

Supports Python 2.7 | 3.5 | 3.6 | 3.7
Latest Release latest release
Package Status status
License license

This package implements the Advanced Encryption Standard (AES) as specified in Federal Information Processing Standards Publication 197 ("FIPS197"):

This implementation is based entirely and solely on FIPS197. The tests in tests/ use the full set of example vectors from Appendix A, B, and C of FIPS197. npaes supports AES-128, AES-192, and AES-256.

Its sole dependencies is NumPy. It does not use OpenSSL or any other C libraries besides the portions of NumPy that are implemented in C.

Additional technical notes can be found in the docstring of npaes/


This package is incomplete. While the raw encryption and decryption are fully tested using the FIPS197 example vectors, it is incomplete for the following reasons:

  • It does not allow you to specify an initialization vector (IV).
  • It does not allow you to specify a block mode.
  • It is optimized in most places but not all, and has little to no chance of ever being as fast as the optimized ANSI C version in OpenSSL.

Basic Usage

import os
from npaes import AES

# Key must be bytes type and 128, 192, or 256 bits
# Or use hashlib.sha256() for an off-length key
key = os.urandom(32)  # 256-bit key

# Your plaintext length must be bytes and a multiple of 16 length
msg = b"a secret message goes here" + 6 * b"\x03"
cipher = AES(key)
ciphertext = cipher.encrypt(msg)

# b'a\x85cna\xc2\xeeu\xe9S\xdf\xabE\x0c\xda\xf4\x19\x11\xa3!\xdd\x96-\x85\x10f\xd4\x18;s%\x81'
# b'a secret message goes here\x03\x03\x03\x03\x03\x03'

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for npaes, version 0.3
Filename, size File type Python version Upload date Hashes
Filename, size npaes-0.3-py3-none-any.whl (15.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size npaes-0.3.tar.gz (12.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page