aesDecryptBlock method

Uint8List aesDecryptBlock(
  1. Uint8List data
)

Implementation

Uint8List aesDecryptBlock(Uint8List data) {
  Uint8List decBlock = Uint8List(16); // 16-byte string
  int i;

  // place input data into the initial state matrix in column order
  for (i = 0; i < 4 * _Nb; ++i) {
    _s[i % 4][(i - i % _Nb) ~/ _Nb] = data[i];
  }

  // add round key
  _addRoundKey(_Nr);

  for (i = _Nr - 1; i > 0; --i) {
    // inverse shift rows
    _invShiftRows();
    // inverse sub bytes
    _invSubBytes();
    // add round key
    _addRoundKey(i);
    // inverse mix columns
    _invMixColumns();
  }

  // inverse shift rows
  _invShiftRows();
  // inverse sub bytes
  _invSubBytes();
  // add round key
  _addRoundKey(i);

  // place state matrix s into decBlock in column order
  for (i = 0; i < 4 * _Nb; ++i) {
    decBlock[i] = _s[i % 4][(i - i % _Nb) ~/ _Nb];
  }
  return decBlock;
}