Custom AES-128 encryption I have a 16-byte ciphertext, 16-byte key, and 16-byte IV. The key and IV I was able to set myself, and all I know about the ciphertext is that when I decrypt it, it will be human-readable.

I have tried PyCrypto and OpenSSL methods to decrypt the ciphertext with no luck. This is leading me to believe that it may be a custom implementation of AES. My background is not in cryptography so please excuse my ignorance.

Is there a standard way to implement AES-128? Is it uncommon to implement your own version of AES? I'm familiar with the AES algorithm, and it seems like it would be possible to implement your own way of scrambling the bits in the individual rounds.

I also noticed the NIST gives out certifications to individual companies for their AES encryption (ie. Google, Cisco, HP, AWS, etc.). Is this because it's a custom implementation?
Is there a standard way to implement AES 128?


There are several implementation strategies to AES (SIMD-based, plain-C, table-based, side-channel resistant, bit-sliced, AES-NI, ...). The "standard" way depends on your platform and goals, depending on the answer to questions such as "do yo have hardware support?", "do you want constant-timeness", "do you want maximal speed", "how much RAM / code space do you have?", "is your mode parallelized?", ...


  Is it uncommon to implement your own version of AES?


Yes, it is, because there are already so many good open-source implementations, however people still do it every now and then. For example re-implement AES "just for fun" and sometimes they have a different set of optimization goals than all previous implementations like "minimize code-size, work everywhere in C, runs in constant-time".


  I'm familiar with the AES algorithm and it seems like it would be
  possible to implement your own way of scrambling the bits in the
  individual rounds.


No. If your implementation doesn't result in the same encryption and decryption functionality as described in FIPS 197, you do not get to call it "AES", because it's some custom scheme you made up.


  I also noticed the NIST gives out certifications to individual
  companies for their AES encryption (ie. Google, Cisco, HP, AWS, etc.)
  Is this because it's a custom implementation?


The only actual evaluation and certification program that I'm aware of that is run by NIST is the cryptographic module validation program, which well, validates cryptographic modules according to FIPS 140-2. These validations are usually carried out by certified validators (certified by NIST). The modules may use AES but they usually do much more and the main aspect usually is on key management, role management and user authentication, but also of course on the correct implementation of the algorithms, so yes, you can get your AES implementation validated by this program, if it is part of a cryptographic module.