freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計-基于des加密算法的word加密插件的實現(xiàn)—論文(編輯修改稿)

2025-01-06 19:14 本頁面
 

【文章內(nèi)容簡介】 應(yīng)宿主程序中對這些項目的操作,并對宿主程序中的數(shù)據(jù)進行特定操作。 3 需求分析和方案 設(shè)計 需求分析 功能需求 用戶在編輯完文檔后可以選擇把文檔全部內(nèi)容或部分內(nèi)容加密生成密文,同樣點擊插件中的解密按紐可以把密文還原為明文。 系統(tǒng)功能流程圖 見圖 2: 第 9 頁 共 20 頁 圖 2 系統(tǒng)功能流程圖 開發(fā)環(huán)境 本插件在 word2021 下開發(fā),可以在 Windows2021/2021/xp 等 操作系統(tǒng)下運行。 開發(fā)環(huán)境配置表 ,如表 1: 表 1 系統(tǒng)配置表 PC 硬件 處理器: Intel PII 450 或更好 內(nèi) 存: 256 M 或更大 硬 盤: 20 G 或更大 軟件 Microsoft Windows NT Server 或更高版本 Microsoft Office 2021 Y 用戶 是否要求加密 DES加密 Word內(nèi)容 Word 是否被 DES加密 DES解密 Word內(nèi)容 保存 Word內(nèi)容 N Y N 第 10 頁 共 20 頁 方案設(shè)計 此功能的實現(xiàn)包括了 DES 算法的實現(xiàn)和插件的實現(xiàn)??梢杂?VB 編寫 Word插件 , VB 以其開發(fā)的易學(xué)好用和強大的用戶界面設(shè)計能力倍受程序員的青睞,是微軟公司推出的開發(fā) Windows 應(yīng)用程序的主力平臺之一。但其不能直接對寄存器進行操作,沒有直接的輸入輸出端口操作語句, 考慮到 DES 算法的效率與 實現(xiàn)等問題 ,必須借助其他編程語言,而 C/C++語言具備 較高的運行效率 ,所以可以通過在 VC 環(huán)境下編寫出高效的 DES 算法代碼 的動態(tài)鏈接庫( DLL),然后在VB 中調(diào)用。 圖 3 系統(tǒng)設(shè)計流程圖 4 程序的實現(xiàn) VC 建立 DES 算法模塊 新建 Win32 動態(tài)庫工程,如下圖所示: 加密 Word DES算法模塊 運行加密插件 Word內(nèi)容加密 解密 調(diào)用 DES加密模塊 調(diào)用 DES解密模塊 Word內(nèi)容解密 第 11 頁 共 20 頁 圖 4 建立 Win32 動態(tài)庫工程 加密導(dǎo)出函數(shù)的定義 void __stdcall Encode( char *sInput, char *sOutput) //sInput 輸入字符串, sOutput輸出字符串 { char buf[1024]。 //定義 1024 字節(jié)的緩沖變量 memset( buf, 0x00, sizeof( buf)) 。 //緩沖區(qū)清零 Des_Go( buf, sInput, sizeof( sInput) , key, sizeof( key) , ENCRYPT) 。 //加密函數(shù) strcpy( sOutput,buf) 。 //將加密后的字 符串輸出 } 解密導(dǎo)出函數(shù)的定義 void __stdcall Decode( char *sInput, char *sOutput) //sInput輸入字符串, sOutput 輸出字符串 { char buf[1024]。 //定義 1024 字節(jié)的緩沖變量 memset( buf, 0x00, sizeof( buf)) 。 //緩沖區(qū)清零 Des_Go( buf, sInput, sizeof( sInput) , key, sizeof( key) , DECRYPT) 。 //解密函數(shù) strcpy( sOutput,buf) 。 //將加密后的字符串輸出 } 加解密相關(guān)函數(shù)的聲名 typedef bool ( *PSubKey) [16][48]。 static void DES( char Out[8], char In[8], const PSubKey pSubKey, bool Type) 。/標(biāo)準(zhǔn) DES 加 /解密 static void SetKey( const char* Key, int len) 。// 設(shè)置密鑰 static void SetSubKey( PSubKey pSubKey, const char Key[8]) 。//設(shè)置子密鑰 static void F_func( bool In[32], const bool Ki[48]) 。// f 函數(shù) static void S_func( bool Out[32], const bool In[48]) 。// s 盒代替 第 12 頁 共 20 頁 static void Transform( bool *Out, bool *In, const char *Table, int len) 。// 變換 static void Xor( bool *InA, const bool *InB, int len) 。// 異或 static void RotateL( bool *In, int len, int loop) 。// 循環(huán)左移 static void ByteToBit( bool *Out, const char *In, int bits) 。//字節(jié)組轉(zhuǎn)換成位組 static void BitToByte( char *Out, const bool *In, int bits) 。//位組轉(zhuǎn)換成字節(jié)組 static bool SubKey[2][16][48]。// 16 圈子密鑰 static bool Is3DES。// 3 次 DES 標(biāo)志 static char Tmp[256], deskey[16]。 VB 編寫 Word 插件 建立 Word 插件工程 ( 1)創(chuàng)建“外接程序”工程,如圖 5: 圖 5 VB中新建工程圖 (2) 打開“設(shè)計器”中的 Connect 設(shè)計器。 雙擊該 Connect 的圖標(biāo) ,如圖 6: 圖 6 工程項目圖 修改其中的工程名和應(yīng)用程序。其中,“應(yīng)用程序”選擇該插件是針對哪個具體的應(yīng)用程序的。這里選 Word。 ( 3) 添加對 Word類型庫的引用 ,如圖 7 第 13 頁 共 20 頁 圖 7 工程引用圖 系統(tǒng)缺省添加了對 Office類型庫的引用。但由于開發(fā)的是 Word插件,因此需要存取 Word中的對象 。 所有必須添加對 Word的引用。 ( 4)打開該設(shè)計器的代碼窗口。設(shè)計器的代碼就是插件接口方法的實現(xiàn) 。 1) 刪除系統(tǒng)缺省添加的代碼。 系統(tǒng)缺省添加的代碼是針對 VB插件的,而不是 Word或其它應(yīng)用 程序插件的。因此刪除它們。 2) 添加 AddinInstance對象的 OnConnection方法。 AddinInstance就代表了該插件本身。 ( 5) 調(diào)試 設(shè)置該工程的屬性,將“調(diào)試”中的啟動程序設(shè)置為系統(tǒng)中安裝的。 圖 8 工程屬性圖 此后,可以設(shè)置斷點,運行。采用標(biāo)準(zhǔn) VB中的調(diào)試方法調(diào)試程序。 ( 6) 安裝 第 14 頁 共 20 頁 1) 生成 DLL后,自動在本機注冊該插件。本機以后就可以使用了。 2) 在其它機器安裝: 將 DLL拷貝到 system32目錄(其它目錄也可以) 運行: regsvr32 DLL文件全路徑( SYSTEM32目錄不用路徑) 3) 刪除 運行: regsvr32 u DLL文件全路徑( SYSTEM32目錄不用路徑) Word 代碼 的編寫 (1) API 函數(shù)聲明 ‘使用 API 文本瀏覽器貼入的 WinAPI 函數(shù)聲明 Private Declare Function OpenClipboard Lib user32 ( ByVal hwnd As Long) As Long ‘聲明打開剪貼板函數(shù) Private Declare Function CloseClipboard Lib user32 () As Long ‘聲明關(guān)閉剪貼板函數(shù) Private Declare Function EmptyClipboard Lib user32 () As Long ‘聲明清除剪貼板函數(shù) Private Declare Function SetClipboardData Lib user32 ( ByVal wFormat As Long, ByVal hMem As Long) As Long ‘聲明剪貼板賦值函數(shù) Private Declare Sub Encode Lib DLL ( ByVal sInput As String, ByVal sOutput As String) ’加密函數(shù)的聲明 Private Declare Sub Decode Lib DLL ( ByVal sInput As String, ByVal sOutput As String) ‘解密函數(shù)的聲明 Private Const CF_BITMAP = 2 Private mAppWord As Private mBar As ‘使用 WithEvents 聲明,可以定義 mBtn1,mBtn2 的事件響應(yīng)程序 Private WithEvents mBtn1 As Private WithEvents mBtn2 As ( 2)添加工具欄加密解密按鈕 Private Sub AddinInstance_OnConnection( ByVal Application As Object, ByVal ConnectMode As , ByVal AddInInst As Object, custom() As Variant) Set mAppWord = Application Set mBar = ( My Toolbar for VB, , , True) Set mBtn1 = ( ) ’添加 mBtn按鈕的事件 Set mBtn2 = ( ) ’添加 mBtn2按鈕的事件 SetButtonStyle mBtn1, 203, 加密 , Encode, msoButtonIconAndCaption ‘定義加密按鈕 SetButtonStyle mBtn2, 203, 解密 , Decode, msoButtonIconAndCaption ‘定義解密按鈕 End Sub ( 3)定義按鈕風(fēng)格 Private Sub SetButtonStyle( btn As , idPic As Long, sCaption As String, sToolTip As String, btnStyle As MsoButtonStyle) ‘設(shè)置按鍵圖標(biāo) ‘這里需要使用 WinAPI函數(shù),見最上面的函數(shù)聲明(使用開始菜單中 ”Microsoft Visual Basic 第 15 頁 共 20 頁 API 文本瀏覽器 ”選擇和粘貼 Dim bmp As IPictureDisp Set bmp = LoadResPicture( 203, vbResBitmap) 39。vb 加載資源的方法 If Not bmp Is Nothing Then OpenClipboard 0 EmptyClipboard SetClipboardData CF_BITMAP, CloseClipboard End If 39。設(shè)置按鍵文本 = sCaption 39。設(shè)置按鍵的 ToolTip 幫助信息 = sToolTip 39。顯示按鍵 = True 39。設(shè)置按鍵風(fēng)格 = btnStyle 39。設(shè)置按鍵為允許 = True End Sub ( 4) 加密按鈕事件 Private Sub mBtn1_Click( ByVal Ctrl As , CancelDefault As Boolean) 39。操作 Word 對象 Dim doc As 39。取 Word 當(dāng)前活動文檔 Set doc = Dim para As Dim temp As String * 1024 ‘分配 1024 個字節(jié)緩沖區(qū) Set para =
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1