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

正文內(nèi)容

數(shù)據(jù)加密技術(shù)軟件(編輯修改稿)

2024-08-26 07:00 本頁面
 

【文章內(nèi)容簡介】 密算法,只有計(jì)算機(jī)可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個字或字節(jié)在一個數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進(jìn)一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機(jī)的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對數(shù)列所產(chǎn)生的數(shù)做模運(yùn)算(例如模3),得到一個結(jié)果,然后循環(huán)移位這個結(jié)果的次數(shù),將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機(jī)的方式所產(chǎn)生的密碼對我們的解密程序來講是非常容易的。在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時就需要產(chǎn)生一些校驗(yàn)碼,并且把這些校驗(yàn)碼插入到數(shù)據(jù)流中。這樣做對數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計(jì)算機(jī)程序的病毒才不會在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內(nèi)存要開始執(zhí)行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應(yīng)該保密的,因?yàn)椴《境绦虻木帉懻邔眠@些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。循環(huán)冗余校驗(yàn)是一種典型的校驗(yàn)數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗(yàn)和,這使得丟失一位或兩個位的錯誤一定會導(dǎo)致校驗(yàn)和出錯。這種方式很久以來就應(yīng)用于文件的傳輸,例如xmodemcrc。這是方法已經(jīng)成為標(biāo)準(zhǔn),而且有詳細(xì)的文檔。但是,基于標(biāo)準(zhǔn)crc算法的一種修改算法對于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。一個好的加密算法的重要特點(diǎn)之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。 所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學(xué)理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a(chǎn)’執(zhí)行一個操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個相對應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復(fù)的試驗(yàn),而這需要大量的處理時間。rsa加密算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運(yùn)算所包含的計(jì)算量是非常巨大的,以至于在現(xiàn)實(shí)上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實(shí)中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。這個對稱算法的密鑰是隨機(jī)產(chǎn)生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。我們舉一個例子:假定現(xiàn)在要加密一些數(shù)據(jù)使用密鑰“12345”。利用rsa公鑰,使用rsa算法加密這個密鑰“12345”,并把它放在要加密的數(shù)據(jù)的前面(可能后面跟著一個分割符或文件長度,以區(qū)分?jǐn)?shù)據(jù)和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是“12345”。當(dāng)對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開始位置,利用密鑰“12345”來解密數(shù)據(jù)。這樣就使得一個可靠的經(jīng)過高效加密的數(shù)據(jù)安全地傳輸和解密。多步加密算法在1998年6月1日正式公布,據(jù)說是幾乎不可能被破譯的。下面詳細(xì)的介紹這個算法:使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個可重復(fù)的但高度隨機(jī)化的偽隨機(jī)的數(shù)字的序列。一次使用256個表項(xiàng),使用隨機(jī)數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表。把256個隨機(jī)數(shù)放在一個距陣中,然后對他們進(jìn)行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F(xiàn)在,產(chǎn)生了一個具體的256字節(jié)的表。讓這個隨機(jī)數(shù)產(chǎn)生器接著來產(chǎn)生這個表中的其余的數(shù),以至于每個表是不同的。下一步,使用“shotguntechnique”技術(shù)來產(chǎn)生解碼表?;旧险f,如果a映射到b,那么b一定可以映射到a,所以b[a[n]]=n.(n是一個在0到255之間的數(shù))。在一個循環(huán)中賦值,使用一個256字節(jié)的解碼表它對應(yīng)于我們剛才在上一步產(chǎn)生的256字節(jié)的加密表。使用這個方法,已經(jīng)可以產(chǎn)生這樣的一個表,表的順序是隨機(jī),所以產(chǎn)生這256個字節(jié)的隨機(jī)數(shù)使用的是二次偽隨機(jī),使用了兩個額外的16位的密碼?,F(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密是如下這樣工作的。前一個字節(jié)密文是這個256字節(jié)的表的索引。或者,為了提高加密效果,可以使用多余8位的值,甚至使用校驗(yàn)和或者crc算法來產(chǎn)生索引字節(jié)。假定這個表是256*256的數(shù)組,將會是下面的樣子:crypto1=a[crypto0][value]變量“crypto1”是加密后的數(shù)據(jù),“crypto0”是前一個加密數(shù)據(jù)(或著是前面幾個加密數(shù)據(jù)的一個函數(shù)值)。很自然的,第一個數(shù)據(jù)需要一個“種子”,這個“種子”是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度?;蛘?,可以使用你產(chǎn)生出隨機(jī)數(shù)序列所用的密碼,也可能是它的crc校驗(yàn)和。順便提及的是曾作過這樣一個測試:使用16個字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個字節(jié)的初始的“種子”。然后,在產(chǎn)生出這些隨機(jī)數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達(dá)到每秒鐘100k個字節(jié)。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。加密時所產(chǎn)生的偽隨機(jī)序列是很隨意的,可以設(shè)計(jì)成想要的任何序列。沒有關(guān)于這個隨機(jī)序列的詳細(xì)的信息,解密密文是不現(xiàn)實(shí)的。例如:一些ascii碼的序列,如“eeeeeeee”可能被轉(zhuǎn)化成一些隨機(jī)的沒有任何意義的亂碼,每一個字節(jié)都依賴于其前一個字節(jié)的密文,而不是實(shí)際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數(shù)據(jù)的有效的真正的長度。如果確實(shí)不理解如何來產(chǎn)生一個隨機(jī)數(shù)序列,就考慮fibbonacci數(shù)列,使用2個雙字(64位)的數(shù)作為產(chǎn)生隨機(jī)數(shù)的種子,再加上第三個雙字來做xor操作。這個算法產(chǎn)生了一系列的隨機(jī)數(shù)。算法如下:unsignedlongdw1,dw2,dw3,dwmask。inti1。unsignedlongarandom[256]。dw1={seed1}。dw2={seed2}。dwmask={seed3}。//thisgivesyou332bit”seeds”,or96bitstotalfor(i1=0。i1256。i1++){dw3=(dw1+dw2)^dwmask。arandom[i1]=dw3。dw1=dw2。dw2=dw3。如果想產(chǎn)生一系列的隨機(jī)數(shù)字,比如說,在0和列表中所有的隨機(jī)數(shù)之間的一些數(shù),就可以使用下面的方法:intcdeclmysortproc(void*p1,void*p2){unsignedlong**pp1=(unsignedlong**)p1。unsignedlong**pp2=(unsignedlong**)p2。if(**pp1**pp2)return(1)。elseif(**pp1*pp2)return(1)。return(0)。}inti1。unsignedlong*aprandom[256]。unsignedlongarandom[256]。intaresult[256]。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1