slHash function

String slHash(
  1. List<String> parts
)

Stable 16-hex hash (two 32-bit FNV-1a accumulators kept positive).

Implementation

String slHash(List<String> parts) {
  final src = parts.join('\u0000');
  var h1 = 0x811c9dc5;
  var h2 = 0x01000193;
  for (final byte in utf8.encode(src)) {
    h1 = ((h1 ^ byte) * 0x01000193) & 0x7FFFFFFF;
    h2 = ((h2 ^ (byte + 7)) * 0x85ebca6b) & 0x7FFFFFFF;
  }
  final hex1 = h1.toRadixString(16).padLeft(8, '0');
  final hex2 = h2.toRadixString(16).padLeft(8, '0');
  return (hex1 + hex2).substring(0, 16);
}