decrypt function

dynamic decrypt(
  1. dynamic value1,
  2. dynamic value2
)

XOR decrypt; returns an empty string directly for an empty password

Implementation

dynamic decrypt(dynamic value1, dynamic value2) {
  final str = value1.toString();
  final pwd = value2.toString();
  if (pwd.isEmpty) return '';
  final k = pwd.length;
  var j = 0;
  final buf = StringBuffer();
  for (var i = 0; i < str.length ~/ 2; i++) {
    final hex = str.substring(i * 2, i * 2 + 2);
    final b = int.parse(hex, radix: 16);
    final p = pwd.codeUnitAt(j) & 0xFF;
    buf.write(String.fromCharCode(b ^ p));
    j = (j + 1) % k;
  }
  return buf.toString();
}