Sun*_*ION 5 md5 bytearray stream
我在使用computeHash时遇到了一些麻烦.我正在使用computeHash(Stream)和computeHash(byte []).出于某种原因,他们正在回馈不同的结果.我尝试将byte []写入MemStream,但使用Byte []时结果相同
FileStream zz = new FileStream(t.Filename, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(zz, Encoding.ASCII);
byte[] data = Encoding.ASCII.GetBytes(sr.ReadToEnd());
MemoryStream memStream = new MemoryStream(data);
byte[] test = md5hash.ComputeHash(memStream);
Run Code Online (Sandbox Code Playgroud)
我已关闭文件以确保搜索位置位于起点.
zz = new FileStream(t.Filename, FileMode.Open, FileAccess.Read);
zz.Position = 0;
byte[] test1 = md5hash.ComputeHash(zz);
Run Code Online (Sandbox Code Playgroud)
有什么建议?我唯一的猜测是,它是一个编码问题,或者Stream有不同的大小.
任何帮助将非常感激.
最
诚挚的问候,SunSatION
某些文件编码具有隐藏字符,以提醒消费者应用程序该文件格式。一种组合是:
我”
我有一个 UTF8 格式的文件,并运行以下命令:
byte[] asciidata, streamdata;
using (var zz = new FileStream("utf8.txt", FileMode.Open, FileAccess.Read))
{
var sr = new StreamReader(zz, Encoding.ASCII);
asciidata = Encoding.ASCII.GetBytes(sr.ReadToEnd());
}
using (var zz = new FileStream("utf8.txt", FileMode.Open, FileAccess.Read))
{
streamdata = new byte[asciidata.Length + 3];
zz.Read(streamdata, 0, streamdata.Length);
}
Run Code Online (Sandbox Code Playgroud)
该变量asciidata包含我的文本文件中的四个字符,但streamdata包含以上述三个魔术字符为前缀的四个字符(总共七个字符)。
总之,我相信您对编码是罪魁祸首的怀疑是正确的。