應用程式使用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控制代碼資源。