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 に答える