encrypt method

Future<String> encrypt(
  1. dynamic data, {
  2. String? timeKey,
})

Implementation

Future<String> encrypt(dynamic data, {String? timeKey}) async {
  _setTime(timeKey);
  // File or media encryption
  if (data is String && await File(data).exists()) {
    final file = File(data);
    final ext = '.' + data.split('.').last;
    final raw = await file.readAsBytes();
    final encBytes = _proc(raw, true);
    final extBytes = utf8.encode(ext);
    final extLen = [extBytes.length];
    final finalBytes = <int>[]..addAll(extLen)..addAll(extBytes)..addAll(encBytes);
    final base = data.substring(0, data.length - ext.length);
    final outfile = base + '.kaalka';
    await File(outfile).writeAsBytes(finalBytes);
    return outfile;
  }
  // Text encryption
  if (data is String) {
    return _encryptMessage(data);
  }
  // Binary encryption
  if (data is List<int>) {
    return utf8.decode(_proc(data, true));
  }
  throw ArgumentError('Unsupported data type for encryption.');
}