iamhuzl

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            1 隨筆 :: 13 文章 :: 21 評(píng)論 :: 0 Trackbacks
            DES(Data Encryption Standard)算法,于1977年得到美國(guó)政府的正式許可,是一種用56位密鑰來(lái)加密64位數(shù)據(jù)的方法。一般密碼長(zhǎng)度為8個(gè)字節(jié),其中56位加密密鑰,每個(gè)第8位都用作奇偶校驗(yàn)。

             DES的幾種工作方式

          第一種電子密本方式(ECB)
             將明文分成n個(gè)64比特分組,如果明文長(zhǎng)度不是64比特的倍數(shù),則在明文末尾填充適當(dāng)數(shù)目的規(guī)定符號(hào)。對(duì)明文組用給定的密鑰分別進(jìn)行加密,行密文C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,…..,n-1。

            第二種密文分組鏈接方式(CBC)
             在CBC方式下,每個(gè)明文組xi在加密前與先一組密文按位模二加后,再送到DES加密,CBC方式克服了ECB方式報(bào)內(nèi)組重的缺點(diǎn),但由于明文組加密前與一組密文有關(guān),因此前一組密文的錯(cuò)誤會(huì)傳播到下一組。

            第三種密文反饋方式(CFB),可用于序列密碼
             明文X=(x0,x1,……,xn-1),其中xi由t個(gè)比特組成0   第四種輸出反饋方式(OFB),可用于序列密碼
             與CFB唯一不同的是OFB是直接取DES輸出的t個(gè)比特,而不是取密文的t個(gè)比特,其余都與CFB相同。但它取的是DES的輸出,所以它克服了CFB的密文錯(cuò)誤傳播的缺點(diǎn)

             DES的幾種填補(bǔ)方式
             DES是對(duì)64位數(shù)據(jù)的加密算法,如數(shù)據(jù)位數(shù)不足64位的倍數(shù),需要填充,補(bǔ)充到64位的倍數(shù)。

             NoPadding
             API或算法本身不對(duì)數(shù)據(jù)進(jìn)行處理,加密數(shù)據(jù)由加密雙方約定填補(bǔ)算法。例如若對(duì)字符串?dāng)?shù)據(jù)進(jìn)行加解密,可以補(bǔ)充\0或者空格,然后trim

             PKCS5Padding
             加密前:數(shù)據(jù)字節(jié)長(zhǎng)度對(duì)8取余,余數(shù)為m,若m>0,則補(bǔ)足8-m個(gè)字節(jié),字節(jié)數(shù)值為8-m,即差幾個(gè)字節(jié)就補(bǔ)幾個(gè)字節(jié),字節(jié)數(shù)值即為補(bǔ)充的字節(jié)數(shù),若為0則補(bǔ)充8個(gè)字節(jié)的8
             解密后:取最后一個(gè)字節(jié),值為m,則從數(shù)據(jù)尾部刪除m個(gè)字節(jié),剩余數(shù)據(jù)即為加密前的原文

             SSL3Padding
             SSL3.0協(xié)議定義的填補(bǔ)算法


             java默認(rèn)的DES算法實(shí)現(xiàn)方式為DES/ECB/PKCS5Padding。若c++或其他語(yǔ)言與java進(jìn)行加解密互通,若java采用默認(rèn)實(shí)現(xiàn),另一方工作方式和填補(bǔ)算法必須都是用ECB和PKCS5Padding。

          已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論


          ITeye推薦



          posted on 2010-04-28 13:02 溫水青蛙 閱讀(2234) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 山西省| 望城县| 游戏| 汨罗市| 太保市| 澳门| 陇南市| 盐津县| 全州县| 徐闻县| 内黄县| 基隆市| 钦州市| 通渭县| 无锡市| 稻城县| 大港区| 长丰县| 巴中市| 通海县| 永吉县| 湖州市| 澄城县| 江城| 抚松县| 诸城市| 太白县| 庄浪县| 工布江达县| 绍兴县| 西乌珠穆沁旗| 河南省| 成武县| 巴彦县| 资溪县| 普陀区| 红桥区| 丹江口市| 全南县| 英超| 从化市|