2009年4月1日 星期三

AES原始碼 & 加/解密檔案心得

很多程式 為了機密或是不想被使用者改設定
需要加密自己的檔案 這邊提供一個AES的source codes
我利用AES 作一個加解密程式
我是利用 http://www.hoozi.com/Articles/AESEncryption.htm 上的source codes
去整合出我的AES的pure c code module


AES module API list
1. SetKey API
2. Encrypt/Decrypt Memory to memory API
3. Encrypt memory to File API
4. Decrypt file to memory API
5. Encrypt/Decrypt File to File API

這邊 舉出要設計一個加解密程式的一點心得
因為AES是屬於block encryption
所以 在實作上 必須要注意 (適用在所有加密的檔案)
加密後的檔案 必須要有一個自己定義的header
header內容
1. signature (用來比對 檔案 是否為我們的定義的)
2. encrypted data size (比對 檔案size)
3. original data size (因為AES是block encryption,所以 原始檔案size必須要記錄下來)
4. Hash key(EX: MD5, SHA1 用來判斷 內容是否有問題)
5. flag(例如 有沒有compress等等的狀態的描述)
6. version (為了以後擴充用)
7. reserved buffer

PS. Header 的設計
1. 要考慮到 padding issue.
2. size要考慮到big-endian/ little endian issue(cross platform)


附上的 是簡易的版本(win32 only/VS2005) 提供
1. SetKey API
2. Encrypt/Decrypt Memory to memory API
Sample code

沒有留言:

張貼留言