encryptString method

String encryptString(
  1. String plaintext
)

Implementation

String encryptString(String plaintext) {
  List<int> data = utf8.encode(plaintext).toList();
  while (data.length % 8 != 0) {
    data = [...data, 0]; // Zero padding
  }

  List<int> encrypted = [];
  for (int i = 0; i < data.length; i += 8) {
    List<int> block = encipher([
      (data[i] << 24) |
          (data[i + 1] << 16) |
          (data[i + 2] << 8) |
          data[i + 3],
      (data[i + 4] << 24) |
          (data[i + 5] << 16) |
          (data[i + 6] << 8) |
          data[i + 7]
    ]);
    encrypted.addAll([
      (block[0] >> 24) & 0xFF,
      (block[0] >> 16) & 0xFF,
      (block[0] >> 8) & 0xFF,
      block[0] & 0xFF,
      (block[1] >> 24) & 0xFF,
      (block[1] >> 16) & 0xFF,
      (block[1] >> 8) & 0xFF,
      block[1] & 0xFF
    ]);
  }

  return base64.encode(encrypted);
}