郭萌萌
摘要:計算機的高速發(fā)展使信息安全面臨著巨大的挑戰(zhàn)。在計算機應用中要想確保信息安全,就必須要對密碼算法進行合理應用?;诖?,該文對密碼算法進行了分析,并將密碼算法的C語言實現(xiàn)進行了簡單介紹和說明。
關(guān)鍵詞:密碼算法;C語言;隨機數(shù)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)35-8371-02
密碼學具有悠久的歷史,但同時也是一門嶄新的課程,人們從來沒有停止對密碼學的研究。現(xiàn)代密碼學理論十分復雜,現(xiàn)代密碼學的發(fā)展需要現(xiàn)代數(shù)學和計計算機科學的支持。進入二十一世紀后,人們已經(jīng)計入到了計算機時代,如何確保計算機中的信息在存儲、傳輸、交換中的安全性是一個值得探討的話題。
1 計算機密碼學發(fā)展歷史
密碼學在人類發(fā)展歷史中有著不可代替的作用,從2000多年前古埃及發(fā)生戰(zhàn)爭,密碼就出現(xiàn)在了人類中,起初的密碼就是簡單的記錄符號。隨著時代的推移,在兩次世界大戰(zhàn)中人們開始意識到密碼的重要性。
密碼學真正成為一門學科是在二十世紀七十年代。美國國家標準局在1977年對DES(數(shù)據(jù)加密標準)進行了公布,并批準在非商業(yè)和非機密單位中對其進行應用,從此解開了密碼的神秘面紗。早在1975年“密碼學的新方向”一文中就提出了適用于網(wǎng)絡(luò)的公鑰密碼理念,這也是人們對公鑰密碼進行研究的開始。受“密碼學的新方向”影響,各種公鑰密碼體制被提了出來,在眾多體制中,RSA成為了密碼學研究的一個里程碑。不夸張的說,“沒有公鑰密碼的研究也不會有近代密碼學”?,F(xiàn)代社會是一個信息高速發(fā)展的社會,隨著科技的發(fā)展,密碼學也取得了巨大進步,而且也成為了許多學科發(fā)展的基礎(chǔ)。
2 常見的密碼算法
2.1 密碼系統(tǒng)保密機理
計算機及互聯(lián)網(wǎng)在人們的日常生活中越來越普及,隨之而來的,人們對信息安全方面的要求也越來越高。在網(wǎng)絡(luò)環(huán)境中確保信息完整性、準確性和機密性都需要密碼技術(shù)來實現(xiàn)。圖1為密碼系統(tǒng)保密機理。
在圖1中key1表示的是加密密鑰,key2表示的是解密密鑰,密鑰系統(tǒng)依據(jù)key1與key2是否相同,將密碼算法分為對稱密碼算法和非對稱密碼算法。非對稱密碼算法在應用過程中既要使用公鑰也要使用私鑰。圖1中的EK1(M)和DK2(C)就是在加密和解密過程中使用的密碼算法。
密碼技術(shù)是密碼算法的核心,算法主要通過軟件實現(xiàn),少數(shù)算法可以通過硬件完成,軟件實現(xiàn)算法的主要優(yōu)勢在于可優(yōu)化和可維護,因此在編寫上通常使用C語言。
2.2 對稱密碼算法
KP與KS在實質(zhì)上是相同的,也就是說可以由KP導出KS。從加密模式上對對稱加密模式進行分類,可以將其分為分組密碼和序列密碼兩大類。在對稱加密系統(tǒng)中,加密和解密過程中使用的密鑰都是相同的,因為加密和解密需要使用相同的密鑰,因此加密方和解密方都需要對他們使用的密鑰進行保存,同時加密和解密方都需要嚴格的保存密鑰,避免泄露,也只有這樣才能實現(xiàn)密碼的完整性和機密性[1]。
2.3 非對稱密碼算法
非對稱密碼算法也叫做雙鑰密碼算法,在此算法中KP同KS之間有著很大差別,KP是公開密鑰,也叫公鑰,KS則是必須需要保密的密鑰,也叫私鑰。在公鑰密碼算法中可以較容易的由KS推導出KP,但很難實現(xiàn)反向推導,這種單向性的實現(xiàn),主要是具有單向函數(shù),其中單向函數(shù)滿足以下條件:1) 指定x值,很容易完成y=kk(x)的計算;2) 指定y,對x進行計算,使x=f-1k(y)無法實現(xiàn)。3) 存在數(shù)值k,如果k為已知,給出任意一個y,如果存在相應的x,則很容易完成x=f-1k(y)的計算[2]。
2.4 兩種算法的對比
對稱密碼與非對稱密碼算在實際應用中各有各的特點,將兩者進行對比,優(yōu)缺點如表1所示。從目前的應用情況來看,對稱密碼經(jīng)常被應用在大量數(shù)據(jù)的加密。非對稱密碼經(jīng)常應用在關(guān)鍵性數(shù)據(jù)加密。例如會話密鑰。
3 常見密碼算法分析
3.1常見的對稱密碼算法
IBM公司首先開發(fā)了DES算法,并在1977年被美國采納,作為“非密級”使用標準,并且被廣泛應用到生產(chǎn)中, DES曾經(jīng)是世界上應用最為廣泛的密鑰算法。在對DES算法進行應用時,將明文分成塊,運用8個S盒與8個P盒進行置換,在16輪迭代后,生成比特密文(64bit),在每一輪的迭代中運用的密鑰都是由最初的56比特生成的[3]。在加密和解密過程中采用DES加密和解密,那么加密和解密流程以及密鑰都完全相同,其中僅有的區(qū)別就是解密與加密中應用的子密鑰序列是相反的。DES算法主要存在以下問題:1) DES密鑰空間無法滿足實際需求(256bit)。2) DES里刨除S盒其余計算都是線性的,然而在實際應用中,S盒的密碼算法對安全性影響巨大,而NIST(美國國家標準局)并沒有將S盒設(shè)計原則公布于眾,因此,并不排除S盒中藏有“陷門”,同時因為空間問題DES密鑰的組合形式有限,在被攻擊時,如果攻擊人員采用窮舉法很可能在短時間內(nèi)獲取成功。因此在實際應用中,為了使DES算法安全性能夠得到增加,從事密碼設(shè)計的工作中雖然又提出了獨立密鑰方法、基于DES的Triple算法,但在應用中起到的效果并不明顯[4]。
在對稱密碼算法中IDEA算法是由我國學者萊學嘉和美國著名密碼專家James L.Massey共同提出的,在IDEA數(shù)據(jù)加密算法中密文和明文都是64比特,但密鑰長度則為128比特。IDEA算法需要建立在群運算的基礎(chǔ)之上對密鑰和數(shù)據(jù)進行運算,最后得到解密結(jié)果或密文輸出。
IDEA算法品質(zhì)優(yōu)良,2128比特的密鑰空間對其安全性予以了有利的支持,而且無論在硬件上還是在軟件上都可以較快的實現(xiàn)。從本質(zhì)上來看,IDEA算法算是一種“強”加算法,從目前情況來看,還沒有出現(xiàn)對其產(chǎn)生有效供給的算法。endprint
3.2非對稱加密算法
RSA與上述的DES算法最大的區(qū)別就是它的密鑰算法被相對完整的公開,在加密過程中使用的加密密鑰并不是私密的,在必要時可以通過廣播或網(wǎng)絡(luò)的形式對密鑰進行公布,這也就是在加密過程中使用的公鑰。在解密過程中應用的密鑰則具有私密性,也就是我們常說的私鑰。RSA的安全性基于大整數(shù)素因子分解的困難性,大數(shù)因子分解在數(shù)學界一直都是一道難題,到目前還沒有人發(fā)現(xiàn)合理的解決方法。目前在最快的算法就是參數(shù)對照,然而完成1024比特的一個整數(shù)因子分解所需要的時間是巨大的。RSA在應用過程中不僅能夠用于加密,而且也能用于認證和數(shù)字簽名和密鑰發(fā)布[5]。
3.3 ECC算法
ECC算法早在1985年就被提出,是非對稱密碼算法的一種。其安全性主要源于橢圓曲線離散對數(shù)問題求解難度大。建設(shè)Q是W(JR)(橢圓曲線)上的一點,點F是W(JR)上為Q倍數(shù)點,則存在整數(shù)Y大于0,使F與YF相等,橢圓曲線離散問題就是由給出的Q和F來確定出Y的值。依據(jù)目前的研究結(jié)果來看,對橢圓曲線上的離散對數(shù)問題處理要比離散對數(shù)處理難度更大,也就是說在橢圓曲線公鑰密碼上運用較小的數(shù)就可以實現(xiàn)同大區(qū)域相同的安全性。
4 密碼算法的C語言實現(xiàn)
4.1 數(shù)據(jù)與邏輯運算
在DES算法中,多數(shù)為邏輯運算,密鑰和明文都需要依照按ASCII碼標準統(tǒng)一轉(zhuǎn)化為十進制碼,然后再進行密鑰置換和IP置換,明文在完成置換后,要進行非線性置換,在DES算法中涉及到的置換都應當為按位邏輯運算。運算過程中的數(shù)據(jù)類型十分重要。
4.2 隨機最大數(shù)的生成
無論是使用什么密碼算法,在應用中隨機最大數(shù)都是不可或缺的。一般來說一個能夠被應用的密碼隨機數(shù)發(fā)生器應當具有以下特性:1) 產(chǎn)生的數(shù)值應當是無法預測的。2) 產(chǎn)生的數(shù)應當平均分布。3) 擁有一個大范圍的取值范圍,也就是在使用中能夠獲取到不同的數(shù)值。rand()函數(shù)經(jīng)常用于C語言中隨機函數(shù)的生成,但如果對信息的安全要求較高則不建議使用rand()函數(shù)。這主要是因為rand()具有一定的可預測性,rand()函數(shù)是以之前產(chǎn)生的隨機數(shù)作為種子,然后再生成下一個隨機數(shù)。
正確的做法是在系統(tǒng)中選取一個高級的函數(shù)方法CryptGenRandom,該方法具有平均分布和不可預測的特點,此函數(shù)已經(jīng)在Winerypt.h中進行了聲明,因此可使用于任意Windows平臺。但在對該方法進行調(diào)用時需要C++中的CCrypRandom類的支持,CryptGenRandom主要從Windows系統(tǒng)中獲取以下隨機資源:當前進程、時鐘數(shù)、內(nèi)部CPU計數(shù)器、當前時間等。
4.3 大數(shù)運算
RSA加密需要有大數(shù)運算予以支持,目前主流RSA算法需要512位以上作為支持,而從目前情況來看,多數(shù)計算機中使用的編譯器,僅支持64位,因此無法滿足RSA加密的使用需求,為了解決這一問題則需要建立大數(shù)運算數(shù)據(jù)庫,數(shù)據(jù)庫中應當包含加、減、乘、除等。
大數(shù)表示一種思想:用數(shù)學完成對數(shù)據(jù)的存儲,也就是利用10進制數(shù)對數(shù)組加以表示,然后函數(shù)進行編寫,這樣做的最大優(yōu)點是符合人們長期以來養(yǎng)成的思維習慣,便于人們對其進行理解;主要弊端是效率低,而且在處理過程中需要優(yōu)化,而且對該思想進行運算需要許多額外空間。另一種思路是將大數(shù)當作一個二進制流進行處理,使用各種移位和邏輯操作來進行加減乘除運算,這樣做的最大弊端是代碼的可讀性差、調(diào)試難度大。
4.4 C語言代碼的實現(xiàn)
以求模為例,算法流程如下:
int mod(int* arrayA, int* arrayB,int arrayA_Length,int arrayB_Length)
{if(arrayA_Length {for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; }return arrayA_Length; } else {for(i=arrayB_Length;i < arrayA_Length;i++) {arrayC[j]=arrayA[i]; j=j+1; } arrayC_Length = multiply(arrayC,arrayB); sub(arrayA,arrayC,arrayB,arrayA_Length,arrayC_Length,arrayB_Length); while(arrayA_Length>arrayB_Length) {sub(arrayA,arrayB,arrayA_Length,arrayB_Length); } for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; } return arrayA_Length; }} 5 結(jié)束語 現(xiàn)代社會是信息社會,計算機技術(shù)、網(wǎng)絡(luò)技術(shù)發(fā)迅速,信息安全已經(jīng)成為當今社會的熱點話題。尤其是網(wǎng)絡(luò)信息安全已經(jīng)成為了信息安全領(lǐng)域亟待解決的問題。使用密碼算法是保證網(wǎng)絡(luò)信息安全的一個重要手段。計算機密碼學在解決信息安全上有無可代替的作用,而伴隨著計算技術(shù)被應用到社會的各個領(lǐng)域,密碼技術(shù)的應用領(lǐng)域也得到了進一步擴大,因此在日后的研究過程中要加強對密碼學的研究,使其能夠更好的為人類服務(wù)。 參考文獻: [1] 胡小敏.密碼算法專用描述語言多項式和大數(shù)運算的設(shè)計與實現(xiàn)[D].陜西:西安電子科技大學,2012. [2] 陳曼.分組密碼算法能量與錯誤分析攻擊及其防御對策研究 [D].山東:山東大學,2013. [3] 張曉新,仲叢久.基于C語言實現(xiàn)的數(shù)據(jù)加密DES算法[J].沈陽航空工業(yè)學院學報,2004,21(2):48-49. [4] 張文質(zhì),郝鵬翼.Huffman編碼和解碼的C語言實現(xiàn)[J].洛陽大學學報,2005,4(12):37-41. [5] 林德敬,林柏鋼.三大密碼體制:對稱密碼、公鑰密碼和量子密碼的理論與技術(shù)[J].電訊技術(shù),2003,3:6-12.
3.2非對稱加密算法
RSA與上述的DES算法最大的區(qū)別就是它的密鑰算法被相對完整的公開,在加密過程中使用的加密密鑰并不是私密的,在必要時可以通過廣播或網(wǎng)絡(luò)的形式對密鑰進行公布,這也就是在加密過程中使用的公鑰。在解密過程中應用的密鑰則具有私密性,也就是我們常說的私鑰。RSA的安全性基于大整數(shù)素因子分解的困難性,大數(shù)因子分解在數(shù)學界一直都是一道難題,到目前還沒有人發(fā)現(xiàn)合理的解決方法。目前在最快的算法就是參數(shù)對照,然而完成1024比特的一個整數(shù)因子分解所需要的時間是巨大的。RSA在應用過程中不僅能夠用于加密,而且也能用于認證和數(shù)字簽名和密鑰發(fā)布[5]。
3.3 ECC算法
ECC算法早在1985年就被提出,是非對稱密碼算法的一種。其安全性主要源于橢圓曲線離散對數(shù)問題求解難度大。建設(shè)Q是W(JR)(橢圓曲線)上的一點,點F是W(JR)上為Q倍數(shù)點,則存在整數(shù)Y大于0,使F與YF相等,橢圓曲線離散問題就是由給出的Q和F來確定出Y的值。依據(jù)目前的研究結(jié)果來看,對橢圓曲線上的離散對數(shù)問題處理要比離散對數(shù)處理難度更大,也就是說在橢圓曲線公鑰密碼上運用較小的數(shù)就可以實現(xiàn)同大區(qū)域相同的安全性。
4 密碼算法的C語言實現(xiàn)
4.1 數(shù)據(jù)與邏輯運算
在DES算法中,多數(shù)為邏輯運算,密鑰和明文都需要依照按ASCII碼標準統(tǒng)一轉(zhuǎn)化為十進制碼,然后再進行密鑰置換和IP置換,明文在完成置換后,要進行非線性置換,在DES算法中涉及到的置換都應當為按位邏輯運算。運算過程中的數(shù)據(jù)類型十分重要。
4.2 隨機最大數(shù)的生成
無論是使用什么密碼算法,在應用中隨機最大數(shù)都是不可或缺的。一般來說一個能夠被應用的密碼隨機數(shù)發(fā)生器應當具有以下特性:1) 產(chǎn)生的數(shù)值應當是無法預測的。2) 產(chǎn)生的數(shù)應當平均分布。3) 擁有一個大范圍的取值范圍,也就是在使用中能夠獲取到不同的數(shù)值。rand()函數(shù)經(jīng)常用于C語言中隨機函數(shù)的生成,但如果對信息的安全要求較高則不建議使用rand()函數(shù)。這主要是因為rand()具有一定的可預測性,rand()函數(shù)是以之前產(chǎn)生的隨機數(shù)作為種子,然后再生成下一個隨機數(shù)。
正確的做法是在系統(tǒng)中選取一個高級的函數(shù)方法CryptGenRandom,該方法具有平均分布和不可預測的特點,此函數(shù)已經(jīng)在Winerypt.h中進行了聲明,因此可使用于任意Windows平臺。但在對該方法進行調(diào)用時需要C++中的CCrypRandom類的支持,CryptGenRandom主要從Windows系統(tǒng)中獲取以下隨機資源:當前進程、時鐘數(shù)、內(nèi)部CPU計數(shù)器、當前時間等。
4.3 大數(shù)運算
RSA加密需要有大數(shù)運算予以支持,目前主流RSA算法需要512位以上作為支持,而從目前情況來看,多數(shù)計算機中使用的編譯器,僅支持64位,因此無法滿足RSA加密的使用需求,為了解決這一問題則需要建立大數(shù)運算數(shù)據(jù)庫,數(shù)據(jù)庫中應當包含加、減、乘、除等。
大數(shù)表示一種思想:用數(shù)學完成對數(shù)據(jù)的存儲,也就是利用10進制數(shù)對數(shù)組加以表示,然后函數(shù)進行編寫,這樣做的最大優(yōu)點是符合人們長期以來養(yǎng)成的思維習慣,便于人們對其進行理解;主要弊端是效率低,而且在處理過程中需要優(yōu)化,而且對該思想進行運算需要許多額外空間。另一種思路是將大數(shù)當作一個二進制流進行處理,使用各種移位和邏輯操作來進行加減乘除運算,這樣做的最大弊端是代碼的可讀性差、調(diào)試難度大。
4.4 C語言代碼的實現(xiàn)
以求模為例,算法流程如下:
int mod(int* arrayA, int* arrayB,int arrayA_Length,int arrayB_Length)
{if(arrayA_Length {for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; }return arrayA_Length; } else {for(i=arrayB_Length;i < arrayA_Length;i++) {arrayC[j]=arrayA[i]; j=j+1; } arrayC_Length = multiply(arrayC,arrayB); sub(arrayA,arrayC,arrayB,arrayA_Length,arrayC_Length,arrayB_Length); while(arrayA_Length>arrayB_Length) {sub(arrayA,arrayB,arrayA_Length,arrayB_Length); } for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; } return arrayA_Length; }} 5 結(jié)束語 現(xiàn)代社會是信息社會,計算機技術(shù)、網(wǎng)絡(luò)技術(shù)發(fā)迅速,信息安全已經(jīng)成為當今社會的熱點話題。尤其是網(wǎng)絡(luò)信息安全已經(jīng)成為了信息安全領(lǐng)域亟待解決的問題。使用密碼算法是保證網(wǎng)絡(luò)信息安全的一個重要手段。計算機密碼學在解決信息安全上有無可代替的作用,而伴隨著計算技術(shù)被應用到社會的各個領(lǐng)域,密碼技術(shù)的應用領(lǐng)域也得到了進一步擴大,因此在日后的研究過程中要加強對密碼學的研究,使其能夠更好的為人類服務(wù)。 參考文獻: [1] 胡小敏.密碼算法專用描述語言多項式和大數(shù)運算的設(shè)計與實現(xiàn)[D].陜西:西安電子科技大學,2012. [2] 陳曼.分組密碼算法能量與錯誤分析攻擊及其防御對策研究 [D].山東:山東大學,2013. [3] 張曉新,仲叢久.基于C語言實現(xiàn)的數(shù)據(jù)加密DES算法[J].沈陽航空工業(yè)學院學報,2004,21(2):48-49. [4] 張文質(zhì),郝鵬翼.Huffman編碼和解碼的C語言實現(xiàn)[J].洛陽大學學報,2005,4(12):37-41. [5] 林德敬,林柏鋼.三大密碼體制:對稱密碼、公鑰密碼和量子密碼的理論與技術(shù)[J].電訊技術(shù),2003,3:6-12.
3.2非對稱加密算法
RSA與上述的DES算法最大的區(qū)別就是它的密鑰算法被相對完整的公開,在加密過程中使用的加密密鑰并不是私密的,在必要時可以通過廣播或網(wǎng)絡(luò)的形式對密鑰進行公布,這也就是在加密過程中使用的公鑰。在解密過程中應用的密鑰則具有私密性,也就是我們常說的私鑰。RSA的安全性基于大整數(shù)素因子分解的困難性,大數(shù)因子分解在數(shù)學界一直都是一道難題,到目前還沒有人發(fā)現(xiàn)合理的解決方法。目前在最快的算法就是參數(shù)對照,然而完成1024比特的一個整數(shù)因子分解所需要的時間是巨大的。RSA在應用過程中不僅能夠用于加密,而且也能用于認證和數(shù)字簽名和密鑰發(fā)布[5]。
3.3 ECC算法
ECC算法早在1985年就被提出,是非對稱密碼算法的一種。其安全性主要源于橢圓曲線離散對數(shù)問題求解難度大。建設(shè)Q是W(JR)(橢圓曲線)上的一點,點F是W(JR)上為Q倍數(shù)點,則存在整數(shù)Y大于0,使F與YF相等,橢圓曲線離散問題就是由給出的Q和F來確定出Y的值。依據(jù)目前的研究結(jié)果來看,對橢圓曲線上的離散對數(shù)問題處理要比離散對數(shù)處理難度更大,也就是說在橢圓曲線公鑰密碼上運用較小的數(shù)就可以實現(xiàn)同大區(qū)域相同的安全性。
4 密碼算法的C語言實現(xiàn)
4.1 數(shù)據(jù)與邏輯運算
在DES算法中,多數(shù)為邏輯運算,密鑰和明文都需要依照按ASCII碼標準統(tǒng)一轉(zhuǎn)化為十進制碼,然后再進行密鑰置換和IP置換,明文在完成置換后,要進行非線性置換,在DES算法中涉及到的置換都應當為按位邏輯運算。運算過程中的數(shù)據(jù)類型十分重要。
4.2 隨機最大數(shù)的生成
無論是使用什么密碼算法,在應用中隨機最大數(shù)都是不可或缺的。一般來說一個能夠被應用的密碼隨機數(shù)發(fā)生器應當具有以下特性:1) 產(chǎn)生的數(shù)值應當是無法預測的。2) 產(chǎn)生的數(shù)應當平均分布。3) 擁有一個大范圍的取值范圍,也就是在使用中能夠獲取到不同的數(shù)值。rand()函數(shù)經(jīng)常用于C語言中隨機函數(shù)的生成,但如果對信息的安全要求較高則不建議使用rand()函數(shù)。這主要是因為rand()具有一定的可預測性,rand()函數(shù)是以之前產(chǎn)生的隨機數(shù)作為種子,然后再生成下一個隨機數(shù)。
正確的做法是在系統(tǒng)中選取一個高級的函數(shù)方法CryptGenRandom,該方法具有平均分布和不可預測的特點,此函數(shù)已經(jīng)在Winerypt.h中進行了聲明,因此可使用于任意Windows平臺。但在對該方法進行調(diào)用時需要C++中的CCrypRandom類的支持,CryptGenRandom主要從Windows系統(tǒng)中獲取以下隨機資源:當前進程、時鐘數(shù)、內(nèi)部CPU計數(shù)器、當前時間等。
4.3 大數(shù)運算
RSA加密需要有大數(shù)運算予以支持,目前主流RSA算法需要512位以上作為支持,而從目前情況來看,多數(shù)計算機中使用的編譯器,僅支持64位,因此無法滿足RSA加密的使用需求,為了解決這一問題則需要建立大數(shù)運算數(shù)據(jù)庫,數(shù)據(jù)庫中應當包含加、減、乘、除等。
大數(shù)表示一種思想:用數(shù)學完成對數(shù)據(jù)的存儲,也就是利用10進制數(shù)對數(shù)組加以表示,然后函數(shù)進行編寫,這樣做的最大優(yōu)點是符合人們長期以來養(yǎng)成的思維習慣,便于人們對其進行理解;主要弊端是效率低,而且在處理過程中需要優(yōu)化,而且對該思想進行運算需要許多額外空間。另一種思路是將大數(shù)當作一個二進制流進行處理,使用各種移位和邏輯操作來進行加減乘除運算,這樣做的最大弊端是代碼的可讀性差、調(diào)試難度大。
4.4 C語言代碼的實現(xiàn)
以求模為例,算法流程如下:
int mod(int* arrayA, int* arrayB,int arrayA_Length,int arrayB_Length)
{if(arrayA_Length {for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; }return arrayA_Length; } else {for(i=arrayB_Length;i < arrayA_Length;i++) {arrayC[j]=arrayA[i]; j=j+1; } arrayC_Length = multiply(arrayC,arrayB); sub(arrayA,arrayC,arrayB,arrayA_Length,arrayC_Length,arrayB_Length); while(arrayA_Length>arrayB_Length) {sub(arrayA,arrayB,arrayA_Length,arrayB_Length); } for(i=arrayA_Length-l ;i >=0;i—) {modend[i]=a[i]; } return arrayA_Length; }} 5 結(jié)束語 現(xiàn)代社會是信息社會,計算機技術(shù)、網(wǎng)絡(luò)技術(shù)發(fā)迅速,信息安全已經(jīng)成為當今社會的熱點話題。尤其是網(wǎng)絡(luò)信息安全已經(jīng)成為了信息安全領(lǐng)域亟待解決的問題。使用密碼算法是保證網(wǎng)絡(luò)信息安全的一個重要手段。計算機密碼學在解決信息安全上有無可代替的作用,而伴隨著計算技術(shù)被應用到社會的各個領(lǐng)域,密碼技術(shù)的應用領(lǐng)域也得到了進一步擴大,因此在日后的研究過程中要加強對密碼學的研究,使其能夠更好的為人類服務(wù)。 參考文獻: [1] 胡小敏.密碼算法專用描述語言多項式和大數(shù)運算的設(shè)計與實現(xiàn)[D].陜西:西安電子科技大學,2012. [2] 陳曼.分組密碼算法能量與錯誤分析攻擊及其防御對策研究 [D].山東:山東大學,2013. [3] 張曉新,仲叢久.基于C語言實現(xiàn)的數(shù)據(jù)加密DES算法[J].沈陽航空工業(yè)學院學報,2004,21(2):48-49. [4] 張文質(zhì),郝鵬翼.Huffman編碼和解碼的C語言實現(xiàn)[J].洛陽大學學報,2005,4(12):37-41. [5] 林德敬,林柏鋼.三大密碼體制:對稱密碼、公鑰密碼和量子密碼的理論與技術(shù)[J].電訊技術(shù),2003,3:6-12.