使用windows crypto API加密解密

2021-09-04 05:53:04 字數 1379 閱讀 5907

最近在學習使用windows crypto api 對資料進行加密和解密,有些收穫和經驗,在此分享,希望對學習加密解密的朋友們有所幫助。

經過這次windows crypto api的學習過程,讓我明白乙個道理。其實,使用windows api程式設計並不難,首先要有信心。msdn提供了詳細的幫助和指南,許多問題,只要詳細查閱msnd,完全可以不用在網上查詢任何資料完成自己所需要的程式設計任務。

網上的東西,許多都是來自別人的經驗介紹,很多,但也很雜,為了搜尋到真正有用的資料,往往需要花費很多的時間和精力。

首先,大家不要覺得加密和解密是一件很深奧的事情,其實說白了,資料加密就是對原始資料進行一種變換而已,比如:你的密碼是123456,我對每一位都加1,即234567,寫到檔案中,這就是加密,只要別人不知道你是對每一位都加1得到的234567,別人即使拿到你的密碼檔案,他也不知道怎樣把你的密碼從234567解密出來。(當然,這種簡單的加密是可以很容易被破解的)

資料加密主要分為兩種,一種為對稱加密,另一種為非對稱加密。

對稱加密主要用於大量資料的加密,加密和解密都使用同乙份金鑰,金鑰其實就是一串資料,使用這一串資料對你要加密的資料進行與啊、或啊或者異或什麼的,於是就得到了一串人家看不懂的「密文」。

非對稱加密最經典的應用場合是客戶端/伺服器模式的系統,主要用於需要在網路中傳送的少量資料進行加密(比如客戶端的使用者名稱、密碼向伺服器傳送)。它使用兩份金鑰,公鑰和私鑰。

公鑰用於發給客戶端,私鑰留在伺服器端。資料經過公鑰加密後只能使用對應的私鑰來解密。

因此,客戶端先對使用者名稱密碼資訊使用公鑰加密,然後向伺服器端傳送,即使中途被***截獲,由於他沒有私鑰,故無法進行解密,當伺服器端收到資料後,就使用自己的私鑰進行解密。這樣就可以實現所有的客戶端都使用公鑰進行加密,然後放心地傳送資料到伺服器端,因為只有伺服器端才能夠解密。(思考一下:這種場合如果使用對稱金鑰安全嗎?)

windows crypto api提供了對稱加密和非對稱加密,並且提供了各種加密、解密的演算法,要使用相應的演算法進行加密解密,只需要對生成金鑰的函式的相關引數改變一下即可。

為了學習使用windows crypto api,我沿襲以前的習慣,花費了大量的時間在網上搜尋資料(許多資料用處不大),最終還是在msnd的指導下完全掌握了crypto api的用法,不過,msnd還是有其不足之處,它詳細描述了crypto api相關的知識和資訊,但沒有從巨集觀上對實現用crypto api加密解密到底需要做哪些事情進行做出明確地指導,故在此,我用下面這幅流程圖來告訴大家。

我只從巨集觀上描述了整個加密解密需要進行的幾個流程,具體每一步的**怎麼寫,可以參考msdn,或者本文後面鏈結的乙份文件(這份文件講得非常詳細,也非常好,是我蒐集的資料中最好的乙份,希望對需要它的人有所幫助)

當然,在學習和使用windows crypto api的過程中可能會遇到很多的問題,如果有什麼疑問,可以e—mail給我。

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...