有人可以解释一下为什么这两段代码没有给出相同的结果,而第二个示例中的 StreamWriter 使用的是 UTF8 编码:var TokenEncryptKey = "D268197CF891452844441A143AAEAAEB"; var key = Encoding.UTF8.GetBytes(TokenEncryptKey); var alg = new RijndaelManaged(); alg.Key = key; alg.Mode = CipherMode.ECB; var mem = new MemoryStream(); CryptoStream encryptStream = new CryptoStream(mem, alg.CreateEncryptor(), CryptoStreamMode.Write); var validReservation = Encoding.UTF8.GetBytes("AAAAAAAAAAAAAAAAAAAAAAA"); encryptStream.Write(validReservation, 0, validReservation.Length); encryptStream.Flush(); encryptStream.FlushFinalBlock(); Console.Out.WriteLine(Convert.ToBase64String(mem.GetBuffer(), 0, (int)mem.Length));第二个例子var TokenEncryptKey = "D268197CF891452844441A143AAEAAEB"; var key = Encoding.UTF8.GetBytes(TokenEncryptKey); var alg = new RijndaelManaged(); alg.Key = key; alg.Mode = CipherMode.ECB; var mem = new MemoryStream(); CryptoStream encryptStream = new CryptoStream(mem, alg.CreateEncryptor(), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(encryptStream, Encoding.UTF8); sw.Write("AAAAAAAAAAAAAAAAAAAAAAA"); sw.Flush(); encryptStream.FlushFinalBlock(); Console.Out.WriteLine(Convert.ToBase64String(mem.GetBuffer(), 0, (int)mem.Length));
1 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
凤凰求蛊
TA贡献1825条经验 获得超4个赞
当您使用 时StreamWriter(encryptStream, Encoding.UTF8)
,这将添加 3 个字节的 Unicode BOM(字节顺序标记)。为避免这种情况,请new StreamWriter(m, new UTF8Encoding())
改用。
Encoding.UTF8.GetBytes
即使设置了编码来执行此操作,也不会添加 BOM - 如果需要,您可以使用它来检索它GetPreamble
。
- 1 回答
- 0 关注
- 274 浏览
添加回答
举报
0/150
提交
取消