999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種口令加密工具的設計與實現

2010-01-01 00:00:00
電腦知識與技術 2010年6期

摘要:在利用對稱加密算法時,密鑰管理是安全系統考慮的主要問題。現有保存密鑰的方法大都需要借助物理介質來保存,給用戶帶來了不便。為了解決這個問題,該文提出了一種基于口令的加密方案,能很好的解決密鑰保護問題。最后在.Net平臺下編程實現了一個基于口令的加密工具;實現創建自提取的可執行加密文件,使得基于口令的加解密可以獨立的進行。

關鍵詞:信息安全;PE文件;口令加密;Blowfish加密算法; 密碼學

Design and Implementation of the Password Encryption Tool

ZHAI Shuo

(College of Computer Science, China University of Mine and Technology, Xuzhou 221116, China)

Abstract: When using symmetric encryption algorithms, key management is the main issue to security system. Existing ways to save the key almost need to through physical media, bringing users the inconvenience. In order to solve the problem, this paper proposed a password-based encryption scheme; it can be a good solution to the key protection issues. Finally, coding the program to implement a password-based encryption tool on the .Net platform; On this basis, to achieve and create a self-extracting executable encrypted file, so that password-based encryption and decryption can conduct independently.

Key words: information security; PE file; password encryption; blowfish encryption algorithm; cryptography

在信息化的當代社會,計算機和通信網絡已日益結合并得到廣泛應用,在給人們的生活和工作帶來方便的同時,也帶來了許多需要解決的問題,最突出的就是信息安全保密問題[1]。從大的方面來說,已威脅到國家的政治、經濟、軍事、文化、意識形態等領域。從小的方面來說,信息安全問題也是人們能否保護自己個人隱私的關鍵。信息作為一種重要的戰略資源,國際上圍繞信息的獲取、使用和控制的斗爭愈演愈烈。一些發達國家正是利用其信息技術的優勢,一方面向其他國家大肆傾銷其信息產品,另一方面,在其出口的信息系統中植入“陷阱”和“后門”,以控制、破壞和截取別國的信息[2]。對于廣大用戶來說,更為直接、更為有效的方法就是使用信息加密技術。

密鑰管理是安全系統主要考慮的問題。保護密鑰的一個辦法是把它保存在軟盤或U盤中,只有在文件加解密時才使用它;另一個辦法是使用智能卡,存儲密鑰,通過連接在計算機上的特殊讀取裝置進行加解密操作。用軟盤、U 盤或智能卡保存密鑰有一些不方便之處,需要外在的物理媒介來保存密鑰。

1 相關理論

1.1 PE文件格式

PE(Portable Executable) 文件格式是32 位Windows 操作系統引入的可執行文件格式。所有win32 執行體(除了Vxd 和16 位的Dll) 都使用PE文件格式,包括NT 的內核模式驅動程序( kernel mode drivers) 。在PE 文件中,可執行代碼、已初始化的數據、文件資源和重定位信息等數據被按照屬性的不同而放到不同的節中。掌握了PE 文件的結構就可以根據需要來實現對PE 文件數據的修改。PE 文件格式是以自頂而下的順序解釋的,詳見文獻[3]。

2.2 Blowfish算法

Blowfish算法是一個對稱的分組加密密碼算法,執行速度很快,在32位的微處理器上,它加密一個字節數據只需要18個時鐘周期。它還是一種非常緊湊的算法,可以在小于5KB的內存上運行。而且,Blowfish結構簡單、易于實現。

Blowfish是一個64位分組及可變密鑰長度的分組密碼算法,算法由兩部分組成:密鑰擴展和數據加密。密鑰擴展把長度可達到448位的密鑰轉變成總共4168字節的幾個子密鑰。數據加密由一個簡單函數迭代16輪,每一輪由密鑰相關的置換,密鑰相關和數據相關的代替組成。所有的運算都是32位字的加法和異或,僅有的另一個運算是每輪的四個查表。Blowfish使用了大量的子密鑰,這些密鑰必須在加密及解密之前進行預計算,算法的詳細描述見文獻[4]。

2 文件的加密及其實現

2.1 基于口令的加密的實現

密鑰管理是安全系統主要考慮的問題。用軟盤、U 盤或智能卡保存密鑰有一些不方便之處,需要外在的物理媒介來保存密鑰。在保證安全性的前提下,較簡便的方法是將密鑰保存在計算機文件系統中,使用基于口令的加密(Password Based Encryption,PBE)技術對密鑰加密,然后用本地文件系統的權限加以保護。

在本文設計中將口令作用于對稱加密算法的密鑰擴展以實現基于口令的加密,加密的關鍵代碼如下:

// 加密實現

void BlowFishEnc::BlowFishEnc_encipher(DWORD *xl, DWORD *xr)

{

union awordXl, Xr; Xl.dword = *xl;

Xr.dword = *xr; Xl.dword ^= PArray[0];

//16輪迭代

ROUND(Xr, Xl, 1);ROUND(Xl, Xr, 2);

ROUND(Xr, Xl, 3);ROUND(Xl, Xr, 4);

ROUND(Xr, Xl, 5);ROUND(Xl, Xr, 6);

ROUND(Xr, Xl, 7);ROUND(Xl, Xr, 8);

ROUND(Xr, Xl, 9);ROUND(Xl, Xr, 10);

ROUND(Xr, Xl, 11); ROUND(Xl, Xr, 12);

ROUND(Xr, Xl, 13); ROUND(Xl, Xr, 14);

ROUND(Xr, Xl, 15); ROUND(Xl, Xr, 16);

Xr.dword ^= PArray[17];*xr = Xl.dword;

*xl = Xr.dword;

}

3 文件自解密的實現

文件的自解密實現了解密的獨立,本文中將經過加密的源文件附加到一個可執行文件((Encrypted).exe)上,然后通過運行這個可執行文件實現文件的自解密。

3.1 創建自提取的可執行加密文件

由PE文件的格式,當操作系統正在執行一個可執行文件時,根據PE的頭執行文件,所以PE的頭是一個很大的表格,其中包含了許多PE 文件裝載器要用到的重要域。在PE 頭中包含了PE 文件標識(Signature)、PE 文件頭(File header)和PE 可選頭(Optional header)三部分。因為不允許修改可執行本身,所以我們以文件的末尾為出發點。

為了使附加方法和分離方法使用相同的方式,需要設置格式如表1所示。

使用此格式,我們不會限制在文件名或者文件內容的特定大小中。

很明顯,當我們從合并后的文件(可執行程序+附后)分離文件時,文件的結尾是新的文件結尾,所以結尾的大小是固定并將為我們提供有關所附文件的信息,這一點是非常重要的。上表中固定的部分是“文件名長度指針”和“簽名”部分。

為了執行這樣的任務,我們需要兩個基本方法:

Attach File —附加文件,以自我提取可執行文件;Detach File —獲取附加文件,并寫入到磁盤;另外可以使上述方法方便實現Check Signature—檢查文件是否有文件附加于它;利用上述方法,可以容易的創建一個自提取可執行文件。

自解密類的定義如下:

class SelfExtract

{ public:

//構造函數, filename是想要附加或分離的文件

SelfExtract(const char *filename = 0);

~SelfExtract(void);

//自提取文件名賦予構造函數中給出的文件

//如果成功完成返回值是0 ,如果失敗了,返回值大于0

int attachFile(const char *filename, const char *writeName = 0);

//分離文件到指定的文件夾

//空的輸出文件夾將導致分離到當前文件夾

//如果你想知道分離文件的文件名,detachedFile是輸出參數。

// detachedSize是detachedFile的大小。

//如果成功完成返回值是0 ,如果失敗了,返回值大于0

int detachFile(const char *writeFile, char *detachedFile = 0, int detachedSize = 0);

//檢查是否 _sourceFile 有附加的文件

bool checkSignature();

//改變文件名給構造函數

void setFilename(const char *filename) { strcpy(_sourceFile, filename); }

//使用detachFile方法獲得分離文件的最后文件名

char *getDetached() { return _lastDetached; }

private:

char _sourceFile[MAX_PATH];

char _lastDetached[MAX_PATH];

};

4 文件加解密測試

選擇“加密”功能,點擊“未加密文件瀏覽按鈕”選擇測試文本文件為E:\\MyDocuments\\s01\\測試\est1.txt,選擇加密test1.txt,創建可執行加密文件test1.txt[Encrypted].exe并刪除源文件,操作如圖1所示;加密后,文件夾里的文件如圖2 所示。

運行可執行文件,提示輸入解密密碼,如圖3所示;解密之后就可以瀏覽文件內容了,如圖4所示;為保證安全性,也可以在閱讀后刪除文件。

5 結論

本文提出的文件加密技術所使用的加密算法屬于對稱加密算法。該算法主要采用一個簡單函數迭代16輪,每一輪由密鑰相關的置換,密鑰相關和數據相關的代替組成來實現對數據的加密。并使用口令對算法的密鑰進行加密來保證密鑰的安全管理。工具還實現了自提取可執行文件的創建,使得加密文件的解密可以獨立的完成。除此之外,工具中多線程的應用提高了加解密的速度。因此該工具能夠實現重要文件的安全、快速地加解密,同時能保證信息的完整性。

參考文獻:

[1] 胡志遠.口令破解與加密技術[M].北京:機械工業出版社,2003.

[2] Schneier B.應用密碼學:協議、算法與C源程序[M].吳世忠,祝世雄,張文政,等,譯.北京:機械工業出版社,2000.

[3] 郭小晉,沈春林.32位Windows系統下PE文件的軟件加密解密方法[J].計算機與數字工程,2006,34(3):51-53.

[4] 鐘黔川,朱清新.Blowfish密碼系統分析[J].計算機應用,2007,24(12):2940-2944.

主站蜘蛛池模板: 国产乱子伦精品视频| 四虎免费视频网站| 在线观看国产一区二区三区99| 五月天丁香婷婷综合久久| 999国内精品久久免费视频| 青青草原国产av福利网站 | 国产人人射| 欧美天堂在线| 中国丰满人妻无码束缚啪啪| 成人在线亚洲| 伊人激情久久综合中文字幕| www.亚洲一区二区三区| 久热精品免费| 狠狠综合久久| 久久综合亚洲色一区二区三区| 中文字幕1区2区| 人妻中文字幕无码久久一区| 亚洲国产成人精品青青草原| 爽爽影院十八禁在线观看| 免费A∨中文乱码专区| 亚洲国产AV无码综合原创| 亚洲αv毛片| 国产原创第一页在线观看| 国产色婷婷| 久操中文在线| 91美女视频在线观看| 国产成人精品18| 欧美激情视频一区二区三区免费| 国产91小视频| 亚洲女同一区二区| 国产H片无码不卡在线视频| 国产成人8x视频一区二区| 1769国产精品免费视频| 91丝袜美腿高跟国产极品老师| 自拍偷拍欧美日韩| 久久综合结合久久狠狠狠97色| 欧美性猛交一区二区三区| 久久99国产精品成人欧美| h视频在线播放| 99久久国产综合精品女同| 狠狠色香婷婷久久亚洲精品| 天天综合网亚洲网站| 在线亚洲小视频| 亚洲一级毛片免费看| 99久久精品国产麻豆婷婷| 久久99这里精品8国产| 国产va在线| 国产福利小视频高清在线观看| 久热中文字幕在线观看| 国产尤物在线播放| 97久久精品人人| 免费aa毛片| 3344在线观看无码| 久久精品只有这里有| 日本人又色又爽的视频| 亚洲91在线精品| 久久国语对白| 亚洲,国产,日韩,综合一区 | 亚洲人成影院在线观看| 亚洲人妖在线| 成人综合在线观看| 国内精品自在自线视频香蕉| 中文字幕乱码二三区免费| 国产丝袜无码一区二区视频| 天天综合网站| 欧美伦理一区| 激情无码视频在线看| 亚洲中文久久精品无玛| 精品国产成人高清在线| 亚洲成人动漫在线观看| 91色在线观看| 色视频久久| 欧美色99| 久久综合亚洲鲁鲁九月天| 亚洲国产欧美自拍| 一级毛片在线免费视频| 爱色欧美亚洲综合图区| 亚洲天堂色色人体| 亚洲免费三区| 一本一道波多野结衣av黑人在线 | 欧美成人精品一级在线观看| 91人妻日韩人妻无码专区精品|