我应该在散列之前对数据进行编码吗?

时间:2011-11-29 08:14:27

标签: c# asp.net hash encode sha

我应该在对数据进行哈希处理之前对数据进行编码,以避免Invalid length for a Base-64 char array

#my .cs:

Stream des = file.InputStream;
byte[] data = new byte[file.ContentLength];
des.Read(data, 0, file.ContentLength);
FileStream f = new FileStream(targetFileName, FileMode.Create, FileAccess.ReadWrite);
f.Write(data, 0, data.Length);
f.Flush();
f.Close();
///////////////////////////////////////////////////////////////////////////////////////////
var sha = new System.Security.Cryptography.SHA512Managed();
string hash2 = Convert.ToBase64String(sha.ComputeHash(data));

如果答案是肯定的,如何编码字节数组。

注意:

我使用散列来唯一标识上传的文件以进行任何更改。

1 个答案:

答案 0 :(得分:3)

解码 base-64时发生错误,因为有效的base-64字符串总是4个字符的倍数(有时带有一些填充字符)。不,您不需要将输入编码/填充到ToBase64String。相反,当你传输 / 存储时,听起来你正在失去一些角色(你是否可以在查询字符串上传递它,并且拥有{{1} } vs space 问题?)