1

我应该在散列之前对数据进行编码以避免Invalid length for a Base-64 char array.

# 我的 .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));

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

笔记:

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

4

1 回答 1

3

解码base-64时会发生该错误,因为有效的 base-64 字符串始终是 4 个字符的倍数(有时带有一些填充字符)。不,您不需要将输入编码/填充到ToBase64String. 相反,听起来您在传输/存储它时丢失了一些字符(您是否可能在查询字符串上传递它,并且有+vs空间问题?)

于 2011-11-29T08:23:25.070 回答