4

Result プロパティを呼び出して最終的にハッシュされた結果を取得するために、データをフィードするハッシュ アルゴリズム オブジェクト (この場合は SHA1) があります。

問題は、 m_HashAlgorithm.Hash プロパティが呼び出されると、オブジェクトをフィードに使用できなくなることです。フィードしようとすると、次のようになります: System.Security.Cryptography.CryptographicUnexpectedOperationException: Hash must be finalized before the hash value is received.

中間のハッシュ結果を取得できるようにする必要がありますが、フィードを続けて後で別の結果を取得する必要があります。それを達成する方法はありますか?

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;
    }
}
4

2 に答える 2