2011-11-29 42 views
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)); 

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

注:

我使用散列唯一标识的任何改变上传的文件。

+1

@sehe而真的,我认为这不涉及问题的背景,这是关于**创建一个base-64字符串。你不填充输入。 –

+0

我面对类似的问题这里http://stackoverflow.com/questions/4555249/invalid-length-for-a-base-64-char-array-during-decoding-decryption ..而我公平面对同样的问题,如果我有编码我的数据 –

+1

之前,你究竟在哪里得到“一个基地64字符数组无效的长度”错误?我很确定它不在所示的代码中... –

回答

3

发生错误时解码 base-64,因为有效的base-64字符串总是4个字符的倍数(有时带有一些填充字符)。不,您不需要编码/填充输入ToBase64String。相反,它听起来像你当你是运输/存储失去它的一些字符(你可能通过它的查询字符串,并且具有+ VS 空间问题?)

相关问题