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

正文內(nèi)容

畢業(yè)設(shè)計-基于des加密算法的word加密插件的實(shí)現(xiàn)—論文-文庫吧

2024-11-11 19:14 本頁面


【正文】 ) 處理密鑰 : 從用戶處獲得 64 位密鑰 .( 每第 8 位為校驗(yàn)位 ,為使密鑰有正確的奇偶校驗(yàn) ,每個密鑰要有奇數(shù)個 1位 .( 本文如未特指,均指二進(jìn)制位 ) ( 2) 具體過程 : 對密鑰實(shí)施變換 ,使得變換以后的密鑰的各個位與原密 鑰位對應(yīng)關(guān)系如下表所示 : 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 49 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 把變換后的密鑰等分成兩部分 ,前 28 位記為 C[0],后 28 位記為 D[0]. 計算子密鑰 ( 共 16 個 ) , 從 i=1 開始。 分別對 C[i1],D[i1]作循環(huán)左移來生成 C[i],D[i].( 共 16 次 ) 。 每次循環(huán)左移位數(shù)如下表所示: 輪 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 位數(shù) 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 串聯(lián) C[i],D[i],得到一個 56 位數(shù),然后對此數(shù) 作如下變換以產(chǎn)生 48 位子密鑰 K[i]。 變換過程如下: 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 按以上方法計算出 16 個子密鑰。 對 64 位數(shù)據(jù)塊的處理: 把數(shù)據(jù)分成 64 位的數(shù)據(jù)塊,不夠 64 位的以適當(dāng)?shù)姆绞教钛a(bǔ)。 對數(shù)據(jù)塊作變換。 第 4 頁 共 20 頁 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 將變換后的數(shù)據(jù)塊等分成前后兩部分,前 32 位記為 L[0],后 32 位記為 R[0]。 用 16 個子密鑰對數(shù)據(jù)加密。 根據(jù)下面的擴(kuò)沖函數(shù) E,擴(kuò)展 32 位的成 48 位 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 用 E{R[i1]}與 K[i]作異或運(yùn)算。 把所得的 48 位數(shù)分成 8 個 6 位數(shù)。 16 位為 B[1], 712 位為 B[2],... 4348位為 B[8]。 用 S 密箱里的值替換 B[j]。從 j=1 開始。 S 密箱里的值為 4 位數(shù),共 8 個 S密箱 . 取出 B[j]的第 1 和第 6 位串聯(lián)起來成一個 2 位數(shù) ,記為 即是 S 密箱里用來替換 B[j]的數(shù)所在的列數(shù)。 取出 B[j]的第 2 至第 5 位串聯(lián)起來成一個 4 位數(shù),記為 n。 n 即是 S 密箱里用來替換 B[j]的數(shù)所在的行數(shù)。 用 S 密箱里的值 S[j][ m][ n]替換 B[j]。 8 個 S 密箱如下所示: SBOXE:S1 Binary d1d6 =。 00 01 10 11 \/ d2..d5 \/ Dec 0 1 2 3 ……… .. 1100 12 5 0 15 3 1101 13 0 14 3 5 1110 14 12 9 5 6 1111 15 7 2 8 11 返回第一步直至 8 個數(shù)據(jù)塊都被替換。 把 B[1]至 B[8]順序串聯(lián)起來得到一個 32 位數(shù)。對這個數(shù)做如下變換: bit goes to bit bit goes to bit 16 1 2 17 第 5 頁 共 20 頁 7 2 8 18 20 3 24 19 21 4 14 20 29 5 32 21 12 6 27 22 28 7 3 23 17 8 9 24 1 9 19 25 15 10 13 26 23 11 30 27 26 12 6 28 5 13 22 29 18 14 11 30 31 15 4 31 10 16 25 32 把得到的結(jié)果與 L[i1]作異或運(yùn)算。把計算結(jié)果賦給 R[i]。 把 R[i1]的值賦給 L[i]。 從 a 循環(huán)執(zhí)行,直到 K[16]也被用到。 把 R[16]和 L[16] 順序串聯(lián)起來得到一個 64 位數(shù)。對這個數(shù)實(shí)施 II 變換的逆變換 。 以上就是 DES 算法如何加 密一段 64 位數(shù)據(jù)塊。解密時用同樣的過程,只需把 16 個子密鑰的 順序 顛倒過來,應(yīng)用的順序?yàn)?K[16], K[15], K[14], ...K[1]。 COM 組件簡介 組件 COM,是微軟公司為了計算機(jī)工業(yè)的軟件生產(chǎn)更加符合人類的行為方式開發(fā)的一種新的軟件開發(fā)技術(shù)。在 COM 構(gòu)架下,人們可以開發(fā)出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。由此帶來的好處是多方面的:可以將系統(tǒng)中的組件用新的替換掉,以便隨時進(jìn)行系統(tǒng)的升級和定制;可以在多個應(yīng)用系統(tǒng)中重復(fù)利用同一個組 件;可以方便的將應(yīng)用系統(tǒng)擴(kuò)展到網(wǎng)絡(luò)環(huán)境下; COM 與語言,平臺無關(guān)的特性使所有的程序員均可充分發(fā)揮自己的才智與專長編寫組件模塊;等等。 COM 是開發(fā)軟件組件的一種方法。組件實(shí)際上是一些小的二進(jìn)制可執(zhí)行程序,它們可以給應(yīng)用程序,操作系統(tǒng)以及其他組件提供服務(wù)。開發(fā)自定義的 COM 第 6 頁 共 20 頁 組件就如同開發(fā)動態(tài)的,面向?qū)ο蟮?API。多個 COM 對象可以連接起來形成應(yīng)用程序或組件系統(tǒng)。并且組件可以在運(yùn)行時刻,在不被重新鏈接或編譯應(yīng)用程序的情況下被卸下或替換掉。 Microsoft 的許多技術(shù),如 ActiveX, DirectX 以及 OLE等都是基于 COM 而建立起來的。并且 Microsoft 的開發(fā)人員也大量使用 COM 組件來定制他們的應(yīng)用程序及操作系統(tǒng)。 COM 所含的概念并不止是在 Microsoft Windows 操作系統(tǒng)下才有效。 COM并不是一個大的 API,它實(shí)際上象結(jié)構(gòu)化編程及面向?qū)ο缶幊谭椒菢?,也是一種編程方法。在任何一種操作系統(tǒng)中,開發(fā)人員均可以遵循“ COM 方法”。 一個應(yīng)用程序通常使由單個的二進(jìn)制文件組成的。當(dāng)編譯器生成應(yīng)用程序之后,在對下一個版本重新編譯并發(fā)行新生成的版本之前,應(yīng)用程序一般不會發(fā)生任何變化。操作系統(tǒng),硬件及客戶需 求的改變都必須等到整個應(yīng)用程序被重新生成。 目前這種狀況已經(jīng)發(fā)生變化。開發(fā)人員開始將單個的應(yīng)用程序分隔成單獨(dú)多個獨(dú)立的部分,也既組件。這種做法的好處是可以隨著技術(shù)的不斷發(fā)展而用新的組件取代以有的組件。此時的應(yīng)用程序可以隨新組件不斷取代舊的組件而漸趨完善。而且利用已有的組件,用戶還可以快速的建立全新的應(yīng)用。 傳統(tǒng)的做法是將應(yīng)用程序分割成文件,模塊或類,然后將它們編譯并鏈接成一個單模應(yīng)用程序。它與組件建立應(yīng)用程序的過程(稱為組件構(gòu)架)有很大的不同。一個組件同一個微型應(yīng)用程序類似,即都是已經(jīng)編譯鏈接好并可以使用的 二進(jìn)制代碼,應(yīng)用程序就是由多個這樣的組件打包而得到的。單模應(yīng)用程序只有一個二進(jìn)制代碼模塊。自定義組件可以在運(yùn)行時刻同其他的組件連接起來以構(gòu)成某個應(yīng)用程序。在需要對應(yīng)用程序進(jìn)行修改或改進(jìn)時,只需要將構(gòu)成此應(yīng)用程序的組件中的某個用新的版本替換掉即可。 COM,即組件對象模型,是關(guān)于如何建立組件以及如何通過組件建立應(yīng)用程序的一個規(guī)范,說明了如何可動態(tài)交替更新組件。 接口 對于 COM 來講,接口是一個包含一個函數(shù)指針數(shù)組的內(nèi)存結(jié)構(gòu)。每一個數(shù)組元素包含的是一個由組件所實(shí)現(xiàn)的函數(shù)地址。對于 COM 而言,接口就是 此內(nèi)存結(jié)構(gòu),其他東西;均是 COM 不關(guān)心的實(shí)現(xiàn)細(xì)節(jié)。 在 C++中,可以用抽象基類來實(shí)現(xiàn) COM 接口。由于一個 COM 組件可以實(shí)現(xiàn)支持任意數(shù)目的接口,因此對于這樣的組件,可以用抽象基類的多重繼承來實(shí)現(xiàn)。用類來實(shí)現(xiàn)組件將比其他方法更為容易。 對于客戶來說,一個組件就是一個接口集。客戶只能通過接口才能和 COM組件打交道。從整體上講,客戶對于一個組件可以說是知之甚少的。通常情況下, 第 7 頁 共 20 頁 客戶甚至不必知道一個組件所提供的所有接口。 客戶同組件的交互是通過接口完成的。在客戶查詢組件其他的接口時,也是通過接口完成的。這個接口就是 IUnknown。 Iunknown 接口的定義包含在 Win32 SDK 中的 的頭文件中,引用如下: interface IUnknown { virtual HRESULT_ _stdcall QueryInterface( const IIDamp。 iid,void **ppv) =0。 virtual ULONG_ _stdcall AddRef() =0。 virtual ULONG_ _Release() =0。 }。 所有的 COM 都要繼承 IUnknown??梢杂?Iunknown 的接口指針來查詢該組件 的 其 他 的 接 口 , 并 且 每 個 接 口 的 vtbl 中 的 前 三 個 函 數(shù) 都 是QueryInterface,AddRef 和 Release。這使得所有的 COM 接口都可以被當(dāng)作成IUnknown 接口來處理。由于所有的接口都支持 QueryInterface,因此組件的任何一個接口都可以被客戶用來獲取它所支持的其他接口。 在用 QueryInterface 將組件抽象成由多個相互獨(dú)立的接口構(gòu)成的集合后,還需要管理組件的生命期。這一點(diǎn)是通過對接口的引用計數(shù)實(shí)現(xiàn)的。客戶并不能直接控制組件的生命期。當(dāng)使用完一個接口而要用組件的另一個接口時,是不能 將改組件釋放的。對組件的釋放可以由組件在客戶使用完所有的組件之后自己完成。 IUnknown 的另外兩個成員函數(shù) AddRef 和 Release 的作用就是給客戶提供一種讓它指示何時處理完一個接口的手段。 AddRef 和 Release 實(shí)現(xiàn)的是一種名為引用技術(shù)的內(nèi)存管理技術(shù)。當(dāng)客戶從組件獲得一個接口時,此引用計數(shù)值將增 1。當(dāng)客戶使用完某個接口時,組件的引用計數(shù)值將減 1,當(dāng)引用計數(shù)值為 0 時,組件可以將自己從內(nèi)存中刪除。 AddRef和 Release 可以增加和減少這一計數(shù)值。 創(chuàng)建 將組件分成多個接口只是將單模應(yīng) 用分個成多個部分的第一步,組件需要被放入動態(tài)鏈接庫( DLL)中。 DLL 是一個組件服務(wù)程序,或者說是發(fā)行組件的一種方式。組件實(shí)際上應(yīng)看成是在 DLL 中實(shí)現(xiàn)的接口集。在客戶獲取某個組件接口指針之前,它必須先將相應(yīng)的 DLL 裝載到其進(jìn)程空間中,并創(chuàng)建此組件。 由于客戶組件所需要的所有函數(shù)都可以通過某個接口指針而訪問到,因此,可以在 DLL 中引出 CreatInstance 函數(shù)就可以使用戶調(diào)用它。之后,可以裝載 DLL并調(diào)用其中的函數(shù)。此功能可由 COM 庫函數(shù) CoCreateInstance 來實(shí)現(xiàn)。CoCreateInstance 創(chuàng)建組件的過程是:傳給它一個 CLSID,然后它創(chuàng)建相應(yīng)的組 第 8 頁 共 20 頁 件,并返回指向所請求的接口的指針。但 CoCreateInstance 沒有給客戶提供一種能控制組件創(chuàng)建過程的方法,缺乏一定的靈活性。事實(shí)上,常用類廠來創(chuàng)建組件。類廠就是一個帶有能夠創(chuàng)建其他組件的接口的組件??蛻粝葎?chuàng)建類廠本身,然后再用一個接口(如 IClassFactory)來創(chuàng)建所需的組件。然后還要用 DllRegisterSever在 Windows 中注冊這個組件。 復(fù)用 COM 組件可以被復(fù)用,它支持“接口繼承”。這種繼承指的是一個類繼 承其基類的類型或接口。抽象基類是一種最純粹的接口繼承,并且正好也被用來實(shí)現(xiàn)COM 接口。在 COM 中,我們可以用包容和聚合來對組件進(jìn)行改造。 包容是在接口級完成的。外部組件包含指向內(nèi)部接口的指針。此時,外部組件僅僅是內(nèi)部組件的一個客戶而已,它將使用內(nèi)部組件的接口來實(shí)現(xiàn)它自己的接口。外部組件也可以通過將調(diào)用轉(zhuǎn)發(fā)給內(nèi)部組件的方法來重新實(shí)現(xiàn)內(nèi)部組件所支持的某個接口。并且外部組件還可以在內(nèi)部組件代碼的前后加上一些代碼以對接口進(jìn)行改造。 聚合是包含的一種變化形式。當(dāng)外部組件聚合了某個內(nèi)部組件的一個接口時,它并沒有象包容那 樣重新實(shí)現(xiàn)此接口并顯式的將調(diào)用請求轉(zhuǎn)發(fā)給內(nèi)部組件。相反,外部組件直接把內(nèi)部組件的接口指針返回給客戶。使用這種方法,外部組件將無需重新實(shí)現(xiàn)并轉(zhuǎn)發(fā)接口中的所有函數(shù)了。 包容和聚合為實(shí)現(xiàn)組件的復(fù)用提供了一種極具魯棒性的機(jī)制。在組件構(gòu)架下,客戶于組件的實(shí)現(xiàn)完全隔離開了。 插件簡介 插件是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。插件一般在宿主應(yīng)用程序上添加控制項(xiàng),如菜單、工具按鍵等。插件響
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1