Я должен преобразовать строку в sha256 в дротике.Например, я использую String a = "2424242401224672"; В моем коде ниже я получаю результат как;Дайджест: 7b73641404a8fe6a4b1161a85db736be2a6c07a046109b993186f7a22190bf13
Код:
String a = "2424242401224672";
var bytes = utf8.encode(a.hashCode.toString());
var digest = sha256.convert(bytes);
print("digest: $digest");
В другой стороне используйте c # для sha256.Они получают байты из строки (объекта), используя c # MemoryStream, BinaryFormatter и XMLSerilizer.
Но когда я показываю свой результат, мне говорят, что они получают другой результат в C # sha256?
Как получить то же самоерезультат с Dart sha256 и C # sha256?
Обновление:
Строка «2424242401224672» в CSharp имеет значение sha256 как: DE4841A9E623AF7D5C598A67C2461702485D5FCF074C0B070D5C070F570870410570410570410570410570470410570410570410570470570570410570570410570410510570410510510510510510510510510510510510577810510510510510875* Обновление-2:
Код Csharp:
private static string ComputeHash(byte[] objectAsBytes)
{
try
{
SHA256 shaM = new SHA256Managed();
byte[] result = shaM.ComputeHash(objectAsBytes);
return byteArrayToHex(result);
}
catch (ArgumentNullException ane)
{
return null;
}
}
private static byte[] ObjectToByteArray(Object objectToSerialize)
{
MemoryStream ms = new MemoryStream();
//BinaryFormatter formatter = new BinaryFormatter();
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(objectToSerialize.GetType());
try
{
//Here's the core functionality! One Line!
//To be thread-safe we lock the object
lock (locker)
{
x.Serialize(ms, objectToSerialize);
//formatter.Serialize(fs, objectToSerialize);
}
//return fs.ToArray();
return ms.ToArray();
}
catch (SerializationException se)
{
return null;
}
finally
{
//fs.Close();
ms.Close();
}
}
}