setKey static method

void setKey(
  1. String key
)

Implementation

static void setKey(String key) {
  List<int> keyBytes = SMUtils.hexStringToBytes(key);
  List<int> intermediateKeys = List<int>.filled(36, 0);
  for (int i = 0; i < 4; i++) {
    intermediateKeys[i] = _readUint32BE(keyBytes, i * 4)^FK[i];
  }
  for (int i = 0; i < 32; i++) {
    intermediateKeys[i + 4] = intermediateKeys[i] ^
    _calculateRoundKey(intermediateKeys[i + 1] ^ intermediateKeys[i + 2] ^ intermediateKeys[i + 3] ^ CK[i]);
    _encryptKey[i] = intermediateKeys[i + 4];
  }

  for (int i = 0; i < 16; i++) {
    int temp = _encryptKey[i];
    _decryptKey[i] = _encryptKey[31 - i];
    _decryptKey[31 - i] = temp;
  }
}