使用Win32 加密API 來進行加密操作

2021-08-08 21:55:59 字數 1151 閱讀 2334

如今,資訊科技的使用變得越來越複雜。進行和傳輸和儲存的資料經常是分類的,且需要防止第三方讀取。這個特別的問題的關鍵字是(從邏輯和物理上講)「安全」。安全的乙個部分是加密。人們通常認為安全僅僅是隨後插入的東西,這是絕對不正確的。

當加密被包含在最終的產品的時候,其使用的經驗法則可以被歸納為下面這幾條:

1.不要依賴於演算法本身的加密操作。

2.公開演算法,但是金鑰保持私有。

rsa 是一種典型的使用cbc(clipher block chaining)的加密方式。這意味著被加密的資訊被分成小塊。每乙個塊使用xor 操作符鏈結在一起,然後被加密。

使用cbc 模式操作的時候,需要所有的塊都有同樣的大小。如果最後乙個塊比其它的塊小,此時有必要使用填充的方法使其大小保持一致。正式的,cbc 模式以一下方式操作,其中以y0開始,y0 是64位初始化向量。

解密時,整個操作只是逆轉了。這意味著密碼塊被解密然後被異或。這樣我們最終得到明文。

win32 api 提供了一些可以提供加密功能的函式。使用系統提供的加密api 的好處是你不用再去尋找第三方的機密提供者,並研究它的安裝和使用方法。缺點也比較明顯,無法相容其它的作業系統平台。

在執行任何操作之前,我們必須建立乙個context。執行加密操作的時候將使用這個context 好幾次,因此,直到加密操作完成,我們應該保持代表context 的控制代碼沒有被關閉。

當我們得到了context,我們需要得到乙個key,加密的時候我們需要使用這個key。key 可以從頭建立也可以從檔案中匯入。下面的**片段中,pbblob(如果不為null)是從檔案中取出的乙個包含key 的二進位制資料。

在儲存key 的使用 pkcs#7 標準是不錯的選擇,本文附帶的程式沒有使用該標準。

匯入或者建立key 之後就可以執行加密或者解密操作了。加密和解密操作是基於這個key的。

解密與加密並沒有特別大的區別。與加密操作一樣,只需一次呼叫即可將密文解密。

明文包含任何資訊的文字/資料。在執行加密之前,最好將明文放入到乙個無符號字元陣列中以避免加密執行過程中可能導致的問題。

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...

win32 各種形狀api

1.rectangle 繪製矩形 bool rectangle int x1,int y1,int x2,int y2 bool rectangle lpcrect lprect rectangle hdc,int left,int top,int rigth,int buttom 2.ellips...

Win32 程序相關的API

開啟程序控制代碼 通過程序id 開啟模組控制代碼 基址 根據程序控制代碼 模組名 獲取模組的檔案全路徑 根據程序控制代碼 模組控制代碼 獲取模組的檔名 根據程序控制代碼 模組控制代碼 獲取模組的映象大小 入口位址 通過程序控制代碼 模組起始位址 讀取程序的記憶體 獲取程序的所有模組的控制代碼 inc...