国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DES加密算法

這篇具有很好參考價(jià)值的文章主要介紹了DES加密算法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、DES加密算法簡介

DES(Data Encryption Standard)是目前最為流行的加密算法之一。DES是對稱的,也就是說它使用同一個(gè)密鑰來加密和解密數(shù)據(jù)。

DES還是一種分組加密算法,該算法每次處理固定長度的數(shù)據(jù)段,稱之為分組。DES分組的大小是64位,如果加密的數(shù)據(jù)長度不是64位的倍數(shù),可以按照某種具體的規(guī)則來填充位。

從本質(zhì)上來說,DES的安全性依賴于虛假表象,從密碼學(xué)的術(shù)語來講就是依賴于“混亂和擴(kuò)散”的原則?;靵y的目的是為隱藏任何明文同密文、或者密鑰之間的關(guān)系,而擴(kuò)散的目的是使明文中的有效位和密鑰一起組成盡可能多的密文。兩者結(jié)合到一起就使得安全性變得相對較高。

DES算法具體通過對明文進(jìn)行一系列的排列和替換操作來將其加密。過程的關(guān)鍵就是從給定的初始密鑰中得到16個(gè)子密鑰的函數(shù)。要加密一組明文,每個(gè)子密鑰按照順序(1-16)以一系列的位操作施加于數(shù)據(jù)上,每個(gè)子密鑰一次,一共重復(fù)16次。每一次迭代稱之為一輪。要對密文進(jìn)行解密可以采用同樣的步驟,只是子密鑰是按照逆向的順序(16-1)對密文進(jìn)行處理。

二、DES加密算法加密原理

DES是采用分組加密。使用64位的分組長度和56位的密鑰長度,將64位的輸入經(jīng)過一系列變換得到64位的輸出。DES算法利用多次組合替代算法和換位算法,通過混淆和擴(kuò)散的相互作用,把明文編輯成密碼強(qiáng)度很高的密文。解密則使用了相同的步驟和相同的密鑰。

64位數(shù)據(jù)為一組進(jìn)行加密;

初始置換根據(jù)一張8*8的置換表,將64位的明文打亂

與56位的密鑰經(jīng)16輪次迭代運(yùn)算形成的初始密文

最后經(jīng)過初始逆置換得到分組的最終密文

三、DES加密算法的實(shí)現(xiàn)

考慮到DES算法中涉及的位操作很多,因此DES算法通常都是在硬件中實(shí)現(xiàn)。DES算法中的圖表和術(shù)語(通過線、框畫的流程圖,以及諸如S盒、P盒這樣的術(shù)語)使其更傾向于在硬件中實(shí)現(xiàn),當(dāng)然,軟件實(shí)現(xiàn)也有它的價(jià)值所在。在軟件開發(fā)中,通過幾種基本的指令操作來幫助實(shí)現(xiàn)DES中的各種置換、轉(zhuǎn)換以及替換操作都是很有效的。

des_encipher

函數(shù)des_encipher將明文的一個(gè)64位的明文分組通過DES算法加密。

由于DES的一個(gè)很好的特點(diǎn)是同樣的過程既能用來加密數(shù)據(jù)也能用來解密數(shù)據(jù),因此des_encipher只需要簡單的調(diào)用des_main,而des_decipher同樣也只需要調(diào)用des_main即可。

函數(shù)des_main通過使用其參數(shù)direction來確定到參數(shù)source提供的數(shù)據(jù)是明文還是密文。direction參數(shù)只是簡單地修改子密鑰的順序。

在des_encipher中,direction設(shè)置為encipher。

函數(shù)des_main()首先檢測參數(shù)key是否為NULL。這將允許des_encipher的調(diào)用者重用上一次調(diào)用時(shí)計(jì)算出來的子密鑰。將子密鑰數(shù)組subkeys聲明為static類型。如果key不為NULL,將計(jì)算子密鑰。

要計(jì)算子密鑰,可以按照前面介紹過的步驟(計(jì)算16個(gè)子密鑰)來執(zhí)行。key的轉(zhuǎn)換是通過函數(shù)permute來實(shí)現(xiàn)的,這里就是根據(jù)一個(gè)特定的表在一個(gè)緩沖區(qū)中置換位。假設(shè)表中的每個(gè)位置(i)上都存在一個(gè)值p,函數(shù)permute通過將位置p的位移動(dòng)到位置(i)上來完成對傳入的buffer的置換。

要置換密鑰,將表Des_Transform(同表1)傳給函數(shù)permute。必要的旋轉(zhuǎn)操作可以通過調(diào)用位操作bit_rot_left來實(shí)現(xiàn)。該操作將buffer按照指定的位數(shù)向左旋轉(zhuǎn)。每一輪要正確旋轉(zhuǎn)28位的子密鑰分組,將表Des_Rotations(同表2)中合適的元素傳給bit_rot_left。通過調(diào)用permute,并把傳入表Des_permuted(同表3),來對每一個(gè)子密鑰做置換選擇。

?要加密一個(gè)數(shù)據(jù)塊,首先要執(zhí)行初始置換。為實(shí)現(xiàn)這一步,首先調(diào)用函數(shù)permute并將表Des_Initial(同表4)傳入。然后,將數(shù)據(jù)分為兩個(gè)32位的分組:lblk以及rblk?;仡櫼幌拢用軘?shù)據(jù)的大部分工作都是將一系列的操作重復(fù)執(zhí)行16輪。每一輪的主要工作都花在計(jì)算函數(shù)(f)的值上,將值保存在fblk中。

每一輪操作開始時(shí),將對rblk執(zhí)行一個(gè)擴(kuò)展置換。為了實(shí)現(xiàn)這個(gè)步驟,將調(diào)用函數(shù)permute,并把表Des_Expansion(同表5)傳入。然后,通過調(diào)用位操作bit_xor來計(jì)算擴(kuò)展后的rblk和某個(gè)適當(dāng)?shù)淖用荑€的異或值。無論是加密還是解密數(shù)據(jù),與本輪操作相關(guān)的子密鑰都需要參與執(zhí)行。一旦完成了異或計(jì)算,將對結(jié)果執(zhí)行一系列的S盒替換操作。Des_Sbox(同表6)定義了8個(gè)用于DES算法中的S盒。對于當(dāng)前fblk中的每個(gè)6位分組,第1位和最后1位聯(lián)合起來確定Des_Sbox中的行號(hào),而中間的4位用來確定列號(hào)。最后執(zhí)行P盒置換來完成函數(shù)f的計(jì)算。通過調(diào)用permute函數(shù)并傳入表Des_Pbox(同表7)來實(shí)現(xiàn)這個(gè)步驟。計(jì)算出lblk與函數(shù)f的值的異或結(jié)果,并交換lblk和rblk來結(jié)束一輪的操作。

將上述過程重復(fù)16次,每輪一次。當(dāng)全部16輪操作完成后,將rblk拷貝到target的前32位中,將lblk拷貝到之后的32位中(按照要求,最后一輪不交換lblk和rblk)。最終,通過調(diào)用permute并把Des_Final(同表8)傳入來完成最后的置換操作。

des_encipher的時(shí)間復(fù)雜度是O(1),因?yàn)榧用軘?shù)據(jù)塊的所有步驟都能在恒定的時(shí)間內(nèi)完成。

des_decipher

函數(shù)des_decipher將一個(gè)64位的密文分組通過DES算法進(jìn)行解密。同des_encipher一樣,des_decipher實(shí)際通過調(diào)用des_main來完成解密任務(wù),但這里direction需要設(shè)置為decipher。因此,des_decipher的工作方式同des_encipher一樣,只是這里的子密鑰需要以逆序的方式參與。具體來說,就是在des_main中,針對每一輪i(從0開始計(jì)數(shù)),參與計(jì)算的子密鑰為subkeys數(shù)組中下標(biāo)為(15-i)的元素。

des_decipher的時(shí)間復(fù)雜度為O(1),因?yàn)榻饷軘?shù)據(jù)塊中的所有步驟都可以在恒定的時(shí)間內(nèi)完成。

考慮到DES算法中涉及的位操作很多,因此DES算法通常都是在硬件中實(shí)現(xiàn)。DES算法中的圖表和術(shù)語(通過線、框畫的流程圖,以及諸如S盒、P盒這樣的術(shù)語)使其更傾向于在硬件中實(shí)現(xiàn),當(dāng)然,軟件實(shí)現(xiàn)也有它的價(jià)值所在。在軟件開發(fā)中,通過幾種基本的指令操作來幫助實(shí)現(xiàn)DES中的各種置換、轉(zhuǎn)換以及替換操作都是很有效的。

des_encipher

函數(shù)des_encipher將明文的一個(gè)64位的明文分組通過DES算法加密。

由于DES的一個(gè)很好的特點(diǎn)是同樣的過程既能用來加密數(shù)據(jù)也能用來解密數(shù)據(jù),因此des_encipher只需要簡單的調(diào)用des_main,而des_decipher同樣也只需要調(diào)用des_main即可。

函數(shù)des_main通過使用其參數(shù)direction來確定到參數(shù)source提供的數(shù)據(jù)是明文還是密文。direction參數(shù)只是簡單地修改子密鑰的順序。

在des_encipher中,direction設(shè)置為encipher

函數(shù)des_main()首先檢測參數(shù)key是否為NULL。這將允許des_encipher的調(diào)用者重用上一次調(diào)用時(shí)計(jì)算出來的子密鑰。將子密鑰數(shù)組subkeys聲明為static類型。如果key不為NULL,將計(jì)算子密鑰。

要計(jì)算子密鑰,可以按照前面介紹過的步驟(計(jì)算16個(gè)子密鑰)來執(zhí)行。key的轉(zhuǎn)換是通過函數(shù)permute來實(shí)現(xiàn)的這里就是根據(jù)一個(gè)特定的表在一個(gè)緩沖區(qū)中置換位。假設(shè)表中的每個(gè)位置(i)上都存在一個(gè)值p,函數(shù)permute通過將位置p的位移動(dòng)到位置(i)上來完成對傳入的buffer的置換。

要置換密鑰,將表Des_Transform(同表1)傳給函數(shù)permute。必要的旋轉(zhuǎn)操作可以通過調(diào)用位操作bit_rot_left來實(shí)現(xiàn)。該操作將buffer按照指定的位數(shù)向左旋轉(zhuǎn)。每一輪要正確旋轉(zhuǎn)28位的子密鑰分組,將表Des_Rotations(同表2)中合適的元素傳給bit_rot_left。通過調(diào)用permute,并把傳入表Des_permuted(同表3),來對每一個(gè)子密鑰做置換選擇。

?要加密一個(gè)數(shù)據(jù)塊,首先要執(zhí)行初始置換。為實(shí)現(xiàn)這一步,首先調(diào)用函數(shù)permute并將表Des_Initial(同表4)傳入。然后,將數(shù)據(jù)分為兩個(gè)32位的分組:lblk以及rblk?;仡櫼幌?,加密數(shù)據(jù)的大部分工作都是將一系列的操作重復(fù)執(zhí)行16輪。每一輪的主要工作都花在計(jì)算函數(shù)(f)的值上,將值保存在fblk中。

每一輪操作開始時(shí),將對rblk執(zhí)行一個(gè)擴(kuò)展置換。為了實(shí)現(xiàn)這個(gè)步驟,將調(diào)用函數(shù)permute,并把表Des_Expansion(同表5)傳入。然后,通過調(diào)用位操作bit_xor來計(jì)算擴(kuò)展后的rblk和某個(gè)適當(dāng)?shù)淖用荑€的異或值。無論是加密還是解密數(shù)據(jù),與本輪操作相關(guān)的子密鑰都需要參與執(zhí)行。一旦完成了異或計(jì)算,將對結(jié)果執(zhí)行一系列的S盒替換操作。Des_Sbox(同表6)定義了8個(gè)用于DES算法中的S盒。對于當(dāng)前fblk中的每個(gè)6位分組,第1位和最后1位聯(lián)合起來確定Des_Sbox中的行號(hào),而中間的4位用來確定列號(hào)。最后執(zhí)行P盒置換來完成函數(shù)f的計(jì)算。通過調(diào)用permute函數(shù)并傳入表Des_Pbox(同表7)來實(shí)現(xiàn)這個(gè)步驟。計(jì)算出lblk與函數(shù)f的值的異或結(jié)果,并交換lblk和rblk來結(jié)束一輪的操作。

將上述過程重復(fù)16次,每輪一次。當(dāng)全部16輪操作完成后,將rblk拷貝到target的前32位中,將lblk拷貝到之后的32位中(按照要求,最后一輪不交換lblk和rblk)。最終,通過調(diào)用permute并把Des_Final(同表8)傳入來完成最后的置換操作。

des_encipher的時(shí)間復(fù)雜度是O(1),因?yàn)榧用軘?shù)據(jù)塊的所有步驟都能在恒定的時(shí)間內(nèi)完成。

des_decipher

函數(shù)des_decipher將一個(gè)64位的密文分組通過DES算法進(jìn)行解密。同des_encipher一樣,des_decipher實(shí)際通過調(diào)用des_main來完成解密任務(wù),但這里direction需要設(shè)置為decipher。因此,des_decipher的工作方式同des_encipher一樣,只是這里的子密鑰需要以逆序的方式參與。具體來說,就是在des_main中,針對每一輪i(從0開始計(jì)數(shù)),參與計(jì)算的子密鑰為subkeys數(shù)組中下標(biāo)為(15-i)的元素。

des_decipher的時(shí)間復(fù)雜度為O(1),因?yàn)榻饷軘?shù)據(jù)塊中的所有步驟都可以在恒定的時(shí)間內(nèi)完成。

四、DES加密算法的三個(gè)原則

混淆:使密文與密鑰的關(guān)系可能復(fù)雜化,使得對手即使獲取了許多明文和對應(yīng)的密文,以及關(guān)于密文的一些統(tǒng)計(jì)特性,也無法推測密鑰。

擴(kuò)散:讓明文中的每一位影響密文中的許多位,后者說讓密文中的每一位受明文中的許多的影響。這樣可以隱蔽明文的統(tǒng)計(jì)特性。當(dāng)然,理想的情況是讓明文中的每一位影響密文中的所有為,或者說讓密文中的每一位受明文中所有位的影響。

分組:可以看成經(jīng)典的電報(bào)密碼本加密技術(shù)的現(xiàn)代傳承,其中由密鑰來決定電報(bào)密碼本的選擇。一次加密一組數(shù)據(jù),密鑰長度為一組數(shù)據(jù)的長度。

五、DES加密算法的特點(diǎn)

DES加密算法產(chǎn)生密鑰的方式簡單,密鑰一般也比較短。

DES加密算法解密速度快,效率很高,適合對大數(shù)據(jù)量的數(shù)據(jù)進(jìn)行加密。

DES加密算法的安全性依賴于密鑰的高度保密,通信雙方必須有方法能保證安全的分享密鑰,并定期更換DES密鑰。文章來源地址http://www.zghlxwxcb.cn/news/detail-599811.html

到了這里,關(guān)于DES加密算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【密碼算法 之一】對稱加密算法 DES \ 3DES 淺析

    【密碼算法 之一】對稱加密算法 DES \ 3DES 淺析

    ??DES(Data Encryption Standard)是1977年美國聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)中所采用的一種對稱密碼(FIPS 46-3)。DES一直以來被美國以及其它國家的政府和銀行等廣泛使用。 ??然而,隨著計(jì)算機(jī)的進(jìn)步,現(xiàn)在DES已經(jīng)能夠被暴力破解,強(qiáng)度大不如從前了。20世紀(jì)末,RSA公司舉辦過破

    2024年02月09日
    瀏覽(22)
  • 基于des雙重加密算法的安全web電子郵件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(論文+源碼)_java_285

    基于des雙重加密算法的安全web電子郵件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(論文+源碼)_java_285

    摘要 本文首先研究并介紹國內(nèi)外目前的背景和現(xiàn)狀,在此基礎(chǔ)上給出論文的主要研究內(nèi)容,其次,對雙重加密算法的電子郵件系統(tǒng)的需求進(jìn)行了分析。再次,對雙重加密算法的電子郵件系統(tǒng)進(jìn)行了總體設(shè)計(jì),根據(jù)其總體設(shè)計(jì)、軟件架構(gòu)和總體功能模塊進(jìn)行了詳細(xì)設(shè)計(jì),作出了

    2024年02月04日
    瀏覽(29)
  • 通俗易懂,十分鐘讀懂DES,詳解DES加密算法原理,DES攻擊手段以及3DES原理。Python DES實(shí)現(xiàn)源碼

    通俗易懂,十分鐘讀懂DES,詳解DES加密算法原理,DES攻擊手段以及3DES原理。Python DES實(shí)現(xiàn)源碼

    DES(Data Encryption Standard)是一種 對稱加密 算法。它是在20世紀(jì)70年代初期由IBM研發(fā)的。它的設(shè)計(jì)目標(biāo)是提供高度的數(shù)據(jù)安全性和性能,并且能夠在各種硬件和軟件平臺(tái)上實(shí)現(xiàn)。 DES使用56位的密鑰和64位的明文塊進(jìn)行加密。DES算法的分組大小是64位,因此,如果需要加密的明文長

    2024年02月03日
    瀏覽(28)
  • DES加密算法實(shí)現(xiàn)

    DES加密算法實(shí)現(xiàn)

    實(shí)驗(yàn)要求: 編寫DES算法實(shí)現(xiàn)程序,運(yùn)行DES程序,演示DES加密與解密的過程。在加密時(shí)顯示明文和密鑰,在加密過程中在每一輪執(zhí)行完畢后顯示該輪的輸出。 (話不多說,直接上代碼?。。。?實(shí)驗(yàn)代碼: 點(diǎn)擊查看代碼 運(yùn)行結(jié)果: 加密過程 解密過程 解析: 其中,子密鑰生成

    2024年01月19日
    瀏覽(24)
  • DES加密算法

    一、DES加密算法簡介 DES(Data Encryption Standard)是目前最為流行的加密算法之一。DES是對稱的,也就是說它使用同一個(gè)密鑰來加密和解密數(shù)據(jù)。 DES還是一種分組加密算法,該算法每次處理固定長度的數(shù)據(jù)段,稱之為分組。DES分組的大小是64位,如果加密的數(shù)據(jù)長度不是64位的倍數(shù)

    2024年02月16日
    瀏覽(18)
  • DES加密算法解析

    DES加密算法解析

    目錄 引言 DES算法介紹 DES發(fā)展 設(shè)計(jì)方案 加密解密過程 16輪F運(yùn)算迭代 原理 混淆和擴(kuò)散 雪崩效應(yīng): 迭代輪數(shù): 函數(shù)F的設(shè)計(jì): 密鑰擴(kuò)展: S-box 的設(shè)計(jì)準(zhǔn)則 安全分析 DES 算法的一些應(yīng)用 參考文章 今天,我們大部分時(shí)間都生活在互聯(lián)網(wǎng)上。無論是存儲(chǔ)我們的個(gè)人信息、娛樂、購

    2024年02月02日
    瀏覽(16)
  • Java 中常見的加密算法,DES、3DES、AES、RSA

    Java 中常見的加密算法,DES、3DES、AES、RSA

    加密算法是一種將數(shù)據(jù)轉(zhuǎn)換為不可讀形式的算法,以保護(hù)數(shù)據(jù)的機(jī)密性和完整性。加密算法被廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫、電子商務(wù)等領(lǐng)域,用于保護(hù)敏感數(shù)據(jù)的安全性,如用戶密碼、信用卡信息、醫(yī)療記錄等。在 Java 中,有許多常見的加密算法,本文將對加密算法的基

    2024年02月03日
    瀏覽(33)
  • DES加密過程及替換算法

    DES加密過程及替換算法

    1、DES加密過程 ①將64位明文進(jìn)行初始置換; ②將置換后的明文分為32位的L0和R0兩部分; ③左邊L1=R0;右邊R1=L0⊕f(R0,K1),其中f()為輪函數(shù),K1為48bit的子密鑰; ④進(jìn)行16輪迭代; ⑤將最后得到的R16和L16進(jìn)行拼接后,再進(jìn)行逆置換,得到密文。 (1)置換 初始置換和逆置換都是

    2024年02月04日
    瀏覽(22)
  • Sweet32漏洞,升級openssl或者禁用3DES和DES弱加密算法

    由于等保的原因,被服務(wù)商掃描出漏洞。 warnings: | 64-bit block cipher 3DES vulnerable to SWEET32 attack 如何不喜歡使用nmap,也可以使用如下工具testssl.sh,但是輸出的內(nèi)容太多了,本次我只截取部分 解決辦法有兩個(gè),一個(gè)是升級OpenSSL 1.0.2k-fips 26 Jan 2017 以上,另外一個(gè)是更新nginx配置,禁

    2024年02月11日
    瀏覽(28)
  • 信息安全復(fù)習(xí)五:數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)

    信息安全復(fù)習(xí)五:數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)

    1.主要內(nèi)容:分組密碼、分組密碼用到的關(guān)鍵技術(shù)和結(jié)構(gòu)、對稱密鑰密碼典型算法DES 2.思考問題: ①按照明文被處理的形式,DES屬于標(biāo)準(zhǔn)的分組密碼 ②根據(jù)密鑰的使用數(shù)量,DES屬于標(biāo)準(zhǔn)的對稱密碼 3.內(nèi)容回顧: ①什么是對稱密鑰密碼模型 ②流密碼與分組密碼的區(qū)別 相同點(diǎn):

    2023年04月25日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包