CSP開發基礎–加密通訊過程中CryptAPI函數的調用流程

來源:互聯網
上載者:User

應用程式使用Crypto API進行加密通訊的一般步驟如下:

1,include wincrypt.h

2,調用CryptAcquireContext()獲得某個CSP模組中的密鑰容器(key container)的一個控制代碼;

3,發送方使用CryptImportKey()將接受方的認證匯入CSP中,從而獲得接收方的公開金鑰;

4,發送方式用CryptGenKey()隨機產生一個工作階段金鑰,且用對方的公開金鑰對工作階段金鑰進行加密,用CryptExportKey()將加密後的工作階段金鑰匯出並且發給對方;

5,接收方收到工作階段金鑰後,用自己的私密金鑰調用CryptImportKey(),將工作階段金鑰解出來;

6,發送方用工作階段金鑰調用CryptEncrypt()加密資料,並且發送給對方;

7,接收方收到加密後的資料,用工作階段金鑰調用CryptDecrypt(),對資料進行解密;

8,通訊完畢,調用CryptDestroyKey()釋放任何密鑰控制代碼,再用CryptReleaseContext()釋放CSP控制代碼。

使用Crypto API進行數位簽章及驗證的一般步驟如下:

1,調用CryptAcquireContext()獲得某個CSP模組中的密鑰容器(key container)的一個控制代碼;

2,簽名者調用CryptGerUserKey()得到用於簽名的密鑰,並用CryptExportKey()降其中的公開金鑰輸出,以便收到數位簽章的人對自己的簽名進行驗證;

3,簽名者用CryptCreateHash()和CryptHashData()計算需要簽名的資料散列值;

4,簽名者用私密金鑰調用CryptSignHash()給資料的散列值加上自己的簽名;

5,負責驗證簽名的人在收到簽名者發來的公開金鑰、資料及簽名後,先用CryptImportKey()將簽名者的公開金鑰匯入密鑰容器中;

6,驗證者再簽名者那樣用CryptCreateHash()和CryptHashData()計算資料的散列值;

7,驗證者用CryptVerifySignature()檢查簽名是否有效;

8,調用CryptDestroyHash()釋放散列值對象,並調用CryptReleaseContext()釋放最初的CSP控制代碼資源。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.