I\'m using the .net port of libsodium. The hash generation function has two forms, one that accepts byte arrays and one that accepts strings:
public static b
Converting a byte array to string and then back again produced different results
A binary data may not be converted to string and then back to byte array
using Encoding.[AnyEncoding].GetBytes
and Encoding.[AnyEncoding].GetString
Instead use Convert.ToBase64String
and Convert.FromBase64String
You can easily test...
var bytes = new byte[] { 255, 255, 255 };
var buf = Encoding.UTF8.GetString(bytes);
var newbytes = Encoding.UTF8.GetBytes(buf);
newbytes
's length will be 9.....
Edit: This is the test case for @Theo
var bytes = new byte[] { 0, 216 }; //any new byte[] { X, 216 };
var buf = Encoding.Unicode.GetString(bytes);
var newbytes = Encoding.Unicode.GetBytes(buf); //253,255