Если у вас есть 16 байтов, хранение 128-битного числа не является проблемой. Сохраните 128-битное значение как 16-байтовое значение вместо строки из 32 символов, в которой 16-байтовое значение сохранено как HEX.
В качестве примечания я использовал поля GUID / UUID в базах данных для хранения хэшей MD5. Хотя более не криптографически безопасны, 128-битные MD5-хэши подходят для контрольных сумм (и намного лучше, чем 64-битные.)
var result = MD5.Create().ComputeHash(new byte[] { 0 });
Console.WriteLine(result.Length);
Console.WriteLine(Convert.ToBase64String(result));
Console.WriteLine(result.Aggregate(new StringBuilder(),
(sb, v) => sb.Append(v.ToString("x2"))));
//16
//k7iFrf4NoInN9jSQT9WfcQ==
//93b885adfe0da089cdf634904fd59f71
File.WriteAllBytes("tempfile.dat", result);
var input = File.ReadAllBytes("tempfile.dat");
Console.WriteLine(input.Length);
Console.WriteLine(Convert.ToBase64String(input));
Console.WriteLine(input.Aggregate(new StringBuilder(),
(sb, v) => sb.Append(v.ToString("x2"))));
//16
//k7iFrf4NoInN9jSQT9WfcQ==
//93b885adfe0da089cdf634904fd59f71
Обратите внимание, что я не показываю содержимое файла, потому что есть большая вероятность, что оно будет содержать "непечатные" символы.