• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    常見密碼算法分析及C語言實現(xiàn)

    2014-12-31 00:37:55郭萌萌
    電腦知識與技術(shù) 2014年35期

    郭萌萌

    摘要:計算機的高速發(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.

    界首市| 平远县| 兴化市| 武威市| 松溪县| 涟源市| 虎林市| 抚州市| 宜都市| 绿春县| 靖边县| 顺平县| 吐鲁番市| 白朗县| 大化| 桦川县| 靖江市| 桐乡市| 宁国市| 邳州市| 冀州市| 江口县| 酒泉市| 桐梓县| 资中县| 连平县| 南靖县| 岢岚县| 霍邱县| 商河县| 通许县| 霍林郭勒市| 东辽县| 观塘区| 灌阳县| 临海市| 临沧市| 鹤峰县| 买车| 上饶县| 临泽县|