我有一個散列算法對象(在本例中爲SHA1),我用數據提供,以便在調用Result屬性後最終獲得散列結果。檢索散列值後使用c#HashAlgorithms
問題是,一旦調用了m_HashAlgorithm.Hash屬性,該對象就不能再用於饋送了。 如果我嘗試提供它,我得到: System.Security.Cryptography.CryptographicUnexpectedOperationException:在檢索哈希值之前必須完成哈希。
我需要能夠得到一箇中間散列結果,但繼續飼養,並在以後得到另一個結果。 有沒有辦法實現它?
private readonly HashAlgorithm m_HashAlgorithm;
public DigitalSignatureCreator(HashAlgorithm hashAlgorithm)
{
m_HashAlgorithm = hashAlgorithm;
m_MemoryStreamEncrypt = new MemoryStream();
m_CryptoStreamEncrypt = new CryptoStream(m_MemoryStreamEncrypt, m_HashAlgorithm, CryptoStreamMode.Write);
}
public void Feed(byte[] data, int offset, int count)
{
m_CryptoStreamEncrypt.Write(data, offset, count);
}
public byte[] Result
{
get
{
return m_HashAlgorithm.Hash;
}
}
OT:你可能不應該使用SHA1加密任何東西...... –
我對結果做RSA。但是這與問題無關 – galbarm
這就是我說OT的原因。但是,斑點... –