雜湊與數位簽章 (Windows 市集應用程式)
雜湊
密碼編譯雜湊函數使用任意長度的資料區塊並傳回固定大小位元字串。簽章資料時通常是使用雜湊函數。由於大部分的公開金鑰簽章作業需要大量的運作,因此通常簽署 (加密) 郵件雜湊比簽署原始郵件更有效率。下列程序代表雖然簡化但卻常用的案例:
- Alice 建立一個金鑰組,她保密私密金鑰,並使用信任憑證授權單位發佈公開金鑰。
- Alice 建立一封郵件,雜湊它,使用自己的私密金鑰簽署雜湊,並將 (未加密) 郵件及簽章傳送給 Bob。
- Bob 抓取 Alice 的公開金鑰並且解密簽章,以抓取 Alice 的雜湊。
- Bob 雜湊他從 Alice 收到的郵件,然後將他計算的雜湊與解密的雜湊進行比較。如果這兩個雜湊是相同的,Bob 就能確定 Alice 寄來的這封郵件沒有被修改過。
請注意,Alice 傳送的是未加密的郵件。僅加密了雜湊。這個程序僅確保原始郵件未經過修改,而且,使用 Alice 的公開金鑰,郵件雜湊會由具有 Alice 私密金鑰存取權的人來簽署,可能就是 Alice 本人。
您可以使用 HashAlgorithmProvider 類別來列舉可用的雜湊演算法及建立 CryptographicHash 值。
數位簽章是等同於私密金鑰訊息驗證碼 (MAC) 的公開金鑰。相對而言,MAC 使用私密金鑰讓郵件收件者驗證郵件在傳輸期間沒有被修改,而簽章則是使用私密/公開金鑰組。
數位簽章
數位簽章是等同於私密金鑰訊息驗證碼 (MAC) 的公開金鑰。相對而言,MAC 使用私密金鑰讓郵件收件者驗證郵件在傳輸期間沒有被修改,而簽章則是使用私密/公開金鑰組。
不過,由於大部分的公開金鑰簽章作業需要大量的運作,因此通常簽署 (加密) 郵件雜湊比簽署原始郵件更有效率。寄件者建立郵件雜湊,簽署它,然後傳送簽章及 (未加密) 郵件兩者。收件者透過郵件計算雜湊,解密簽章,然後將解密的簽章與雜湊值進行比較。如果這兩者相符,收件者即可確定郵件確實是來自寄件者,而且傳輸期間未經過修改。
簽署僅確保原始郵件未經過修改,而且,使用寄件者的公開金鑰,郵件雜湊會由具有私密金鑰存取權的人來簽署。
您可以使用 AsymmetricKeyAlgorithmProvider 物件來列舉可用的簽章演算法及產生或匯入金鑰組。您可以在 CryptographicHash 類別上使用靜態方法來簽署郵件或驗證簽章。