日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01. 对称密码——算法

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01. 对称密码——算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

密碼算法

DES

首先聲明!!!
由于DES的密文可以在短時間內(nèi)被破譯,現(xiàn)已不再使用。

是什么?

DES(Data Encryption Standard)是1977年美國聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)中采用的一種對稱密碼。

怎么做?(加密和解密)

DES將64 bits的明文加密成64 bits的密文。但實(shí)質(zhì)上其密鑰長度為56 bits,因?yàn)槊扛?個比特會設(shè)置一個檢查錯誤的比特。
由于每次只能加密64比特,所以當(dāng)明文較長時,需要對加密進(jìn)行迭代,迭代的方式即稱為模式。(后續(xù)提及)

DES加密和解密

DES的結(jié)構(gòu)(Feistel網(wǎng)絡(luò))

在Feistel網(wǎng)絡(luò)中,加密的各個步驟稱為輪(round),整個加密過程就是進(jìn)行若干次輪的循環(huán)。DES是一種16輪循環(huán)的Feistel網(wǎng)絡(luò)。

Feistel網(wǎng)絡(luò)加密和解密

具體步驟:

  • 輸入的64比特?cái)?shù)據(jù)劃分為兩個32比特,分別作為“左側(cè)”LD和“右側(cè)”RD輸入。
  • ((RD + 子密鑰) --> 輪函數(shù)f) XOR (LD) = 加密后的LD 向下作為下一輪左側(cè)
  • RD直接向下作為下一輪右側(cè)
  • 其中,
    “輪函數(shù)”:根據(jù)RD子密鑰生成看似隨機(jī)的比特序列,用于對LD加密。
    “子密鑰”:本輪加密所使用的密鑰,每一輪都需要一個不同的子密鑰(subkey)。

    注意:
    最后一輪加密后,不需要對調(diào)。
    使用同一子密鑰按照相反順序,即可完成解密——加密解密結(jié)構(gòu)相同
    Feistel網(wǎng)絡(luò)中輪數(shù)可以任意增加,可以使用任意函數(shù)作為輪函數(shù)(即使不存在反函數(shù)也OK!)。
    越復(fù)雜越好!反正能解!
    綜上,無論任何輪數(shù),任何輪函數(shù),都可用相同結(jié)構(gòu)加密和解密,且加密結(jié)果必定能正確解密。

    三重DES

    是什么?

    三重DES(triple-DES)是為了增加DES的強(qiáng)度,重復(fù)3次所得到的一種密碼算法,縮寫3DES

    怎么做?

    其過程是 加密–解密–加密 ,為的是兼容普通的DES(當(dāng)所有密鑰相同時)。
    使用兩(三)種不同密鑰的算法,稱為DES-EDE2(3)(Encryption、Decryption)

    結(jié)構(gòu)

    DES-EDE3加密過程

    現(xiàn)狀

    處理速度不高,除了向下兼容,很少用于新的用途。

    AES——高級加密標(biāo)準(zhǔn)

    2000年,AES(Advanced Encryption Standard)最終被確定為Rijndael對稱密碼算法。

    什么是Rijndael

    Rijndael的分組長度密鑰長度可以選擇以32比特為單位,在128到256比特的范圍
    AES規(guī)格,分組長度固定為128比特密鑰長度只有128、192和256比特三種。

    Rijndael的加密和解密

    DES使用Feistel網(wǎng)絡(luò),Rijndael算法使用SPN結(jié)構(gòu)(Substitution-Permutation network, 代替置換網(wǎng)絡(luò))。
    與DES一樣,Rijndael算法也是由多個構(gòu)成,每一輪分為SubBytes、ShiftRows、MixColumns和AddRoundKey四個步驟。

    加密四個步驟

    輸入分組為128比特,即16字節(jié)

  • SubBytes(逐字節(jié)替換):以每個字節(jié)的值(0~255)為索引,從一張擁有256個值的替換表(S-Box)中查找對應(yīng)值。
  • SubBytes(逐字節(jié)替換)
  • ShiftRows(行平移):以4字節(jié)為單位的行(row)按一定規(guī)則向左平移,且每一行平移的字節(jié)數(shù)不同。
  • ShiftRows(行平移)
  • MixColumns(列混合):將每列4字節(jié)值根據(jù)矩陣運(yùn)算轉(zhuǎn)變?yōu)榱硗獾闹怠?/li>

    MixColumns(列混合)
  • AddRoundKey(輪密鑰XOR):將每1字節(jié)與輪密鑰進(jìn)行XOR。
  • AddRoundKey(輪密鑰XOR)

    其解密過程也是使用相同的結(jié)構(gòu),順序調(diào)換罷了。
    在這種結(jié)構(gòu)中,輸入的所有比特在一輪中都會被加密,這個Feistel網(wǎng)絡(luò)有所區(qū)別,使得其加密所需輪數(shù)更少,此外,加密過程還能以字節(jié)、行、列為單位并行計(jì)算

    ------本文圖文參考書《圖解密碼技術(shù)》------

    總結(jié)

    以上是生活随笔為你收集整理的01. 对称密码——算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。