最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java對(duì)稱加密工作模式原理詳解

 更新時(shí)間:2020年02月13日 12:17:01   作者:Ivy_Xu  
這篇文章主要介紹了Java對(duì)稱加密工作模式原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java對(duì)稱加密工作模式原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

對(duì)稱加密又分為分組加密和序列密碼。

分組密碼,也叫塊加密(block cyphers),一次加密明文中的一個(gè)塊。是將明文按一定的位長分組,明文組經(jīng)過加密運(yùn)算得到密文組,密文組經(jīng)過解密運(yùn)算(加密運(yùn)算的逆運(yùn)算),還原成明文組。

序列密碼,也叫流加密(stream cyphers),一次加密明文中的一個(gè)位。是指利用少量的密鑰(制亂元素)通過某種復(fù)雜的運(yùn)算(密碼算法)產(chǎn)生大量的偽隨機(jī)位流,用于對(duì)明文位流的加密。

解密是指用同樣的密鑰和密碼算法及與加密相同的偽隨機(jī)位流,用以還原明文位流。

分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式。

1)ECB(Electronic Code Book)/電碼本模式

ECB(電子密本方式)其實(shí)非常簡單,就是將數(shù)據(jù)按照8/16節(jié)一段進(jìn)行加密或解密得到一段8/16個(gè)字節(jié)的密文或者明文,最后一段不足8/16個(gè)字節(jié),按照需求補(bǔ)足8/16個(gè)字節(jié)進(jìn)行計(jì)算,之后按照順序?qū)⒂?jì)算所得的數(shù)據(jù)連在一起即可,各段數(shù)據(jù)之間互不影響。

優(yōu)點(diǎn):

1.簡單,有利于并行計(jì)算,誤差不會(huì)被傳送

缺點(diǎn):

1.不能隱藏明文的模式

2.可能對(duì)明文進(jìn)行主動(dòng)攻擊

2)CBC(Cipher Block Chaining)/密文分組鏈接方式

CBC(密文分組鏈接方式)的實(shí)現(xiàn)機(jī)制使加密的各段數(shù)據(jù)之間有了聯(lián)系。其實(shí)現(xiàn)的機(jī)理如下:

加密步驟如下:

1)首先將數(shù)據(jù)按照8/16個(gè)字節(jié)一組進(jìn)行分組得到D1D2......Dn(若數(shù)據(jù)不是8的整數(shù)倍,用指定的PADDING數(shù)據(jù)補(bǔ)位)

2)第一組數(shù)據(jù)D1與初始化向量I異或后的結(jié)果進(jìn)行加密得到第一組密文C1

3)第二組數(shù)據(jù)D2與第一組的加密結(jié)果C1異或以后的結(jié)果進(jìn)行加密,得到第二組密文C2

4)之后的數(shù)據(jù)以此類推,得到Cn

5)按順序連為C1C2C3......Cn即為加密結(jié)果。

解密是加密的逆過程,步驟如下:

1)首先將數(shù)據(jù)按照8/16個(gè)字節(jié)一組進(jìn)行分組得到C1C2C3......Cn

2)將第一組數(shù)據(jù)進(jìn)行解密后與初始化向量I進(jìn)行異或得到第一組明文D1(注意:一定是先解密再異或)

3)將第二組數(shù)據(jù)C2進(jìn)行解密后與第一組密文數(shù)據(jù)進(jìn)行異或得到第二組數(shù)據(jù)D2

4)之后依此類推,得到Dn

5)按順序連為D1D2D3......Dn即為解密結(jié)果。

這里注意一點(diǎn),解密的結(jié)果并不一定是我們?cè)瓉淼募用軘?shù)據(jù),可能還含有你補(bǔ)得位,一定要把補(bǔ)位去掉才是你的原來的數(shù)據(jù)。

優(yōu)點(diǎn):

1. 不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長度長的報(bào)文,是SSL、IPSec的標(biāo)準(zhǔn)

缺點(diǎn):

1. 發(fā)送方和接收方都需要知道初始化向量 IV
2.加密過程是串行的,無法被并行化(在解密時(shí),從兩個(gè)鄰接的密文塊中即可得到一個(gè)平文塊。因此,解密過程可以被并行化)

3.誤差傳遞

3)Cipher Feedback (CFB)/密文反饋模式

密文反饋(CFB,Cipher feedback)模式類似于CBC,可以將塊密碼變?yōu)樽酝降牧髅艽a;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:

需要使用一個(gè)與塊的大小相同的移位寄存器,并用IV將寄存器初始化。然后,將寄存器內(nèi)容使用塊密碼加密,然后將結(jié)果的最高x位與平文的x進(jìn)行異或,以產(chǎn)生密文的x位。下一步將生成的x位密文移入寄存器中,并對(duì)下面的x位平文重復(fù)這一過程。解密過程與加密過程相似,以IV開始,對(duì)寄存器加密,將結(jié)果的高x與密文異或,產(chǎn)生x位平文,再將密文的下面x位移入寄存器。

與CBC相似,平文的改變會(huì)影響接下來所有的密文,因此加密過程不能并行化;而同樣的,與CBC類似,解密過程是可以并行化的。

優(yōu)點(diǎn):

1.隱藏了明文模式

2.分組密碼轉(zhuǎn)化為流模式

3.可以及時(shí)加密傳送小于分組的數(shù)據(jù)

缺點(diǎn):

1.不利于并行計(jì)算

2.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元

3.唯一的IV

4)Output Feedback (OFB)/輸出反饋模式

輸出反饋模式(Output feedback, OFB)可以將塊密碼變成同步的流密碼。它產(chǎn)生密鑰流的塊,然后將其與平文塊進(jìn)行異或,得到密文。與其它流密碼一樣,密文中一個(gè)位的翻轉(zhuǎn)會(huì)使平文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯(cuò)誤校正碼,例如奇偶校驗(yàn)位,即使在加密前計(jì)算而在加密后進(jìn)行校驗(yàn)也可以得出正確結(jié)果。

每個(gè)使用OFB的輸出塊與其前面所有的輸出塊相關(guān),因此不能并行化處理。然而,由于平文和密文只在最終的異或過程中使用,因此可以事先對(duì)IV進(jìn)行加密,最后并行的將平文或密文進(jìn)行并行的異或處理。

可以利用輸入全0的CBC模式產(chǎn)生OFB模式的密鑰流。這種方法十分實(shí)用,因?yàn)榭梢岳每焖俚腃BC硬件實(shí)現(xiàn)來加速OFB模式的加密過程。

優(yōu)點(diǎn):

1.隱藏了明文模式

2.分組密碼轉(zhuǎn)化為流模式

3.可以及時(shí)加密傳送小于分組的數(shù)據(jù)

缺點(diǎn):

1.不利于并行計(jì)算

2.對(duì)明文的主動(dòng)攻擊是可能的

3.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存)

    MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存)

    這篇文章主要介紹了MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java8新特性時(shí)間日期庫DateTime API及示例詳解

    Java8新特性時(shí)間日期庫DateTime API及示例詳解

    這篇文章主要介紹了Java8新特性時(shí)間日期庫DateTime API及示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 在Window系統(tǒng)下安裝Netbeans9的方法

    在Window系統(tǒng)下安裝Netbeans9的方法

    今天小編就為大家分享一篇關(guān)于在Window系統(tǒng)下安裝Netbeans9的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法

    springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法

    本文主要介紹了springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • SpringBoot淺析安全管理之高級(jí)配置

    SpringBoot淺析安全管理之高級(jí)配置

    安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會(huì)發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會(huì)出現(xiàn)問題,這篇文章主要介紹了SpringBoot安全管理之高級(jí)配置
    2022-08-08
  • mybatis利用association或collection傳遞多參數(shù)子查詢

    mybatis利用association或collection傳遞多參數(shù)子查詢

    今天小編就為大家分享一篇關(guān)于mybatis利用association或collection傳遞多參數(shù)子查詢,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java創(chuàng)建文件且寫入內(nèi)容的方法

    Java創(chuàng)建文件且寫入內(nèi)容的方法

    這篇文章主要介紹了Java創(chuàng)建文件且寫入內(nèi)容的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • JAVA操作MongoDB數(shù)據(jù)庫實(shí)例教程

    JAVA操作MongoDB數(shù)據(jù)庫實(shí)例教程

    MongoDB是一個(gè)文檔型數(shù)據(jù)庫,是NOSQL家族中最重要的成員之一,下面這篇文章主要給大家介紹了關(guān)于JAVA操作MongoDB數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Spring事務(wù)隔離級(jí)別簡介及實(shí)例解析

    Spring事務(wù)隔離級(jí)別簡介及實(shí)例解析

    這篇文章主要介紹了Spring事務(wù)隔離級(jí)別簡介及實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • SSH結(jié)合jquery實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果

    SSH結(jié)合jquery實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了SSH結(jié)合jquery實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論

天门市| 合作市| 白河县| 玛纳斯县| 娱乐| 那坡县| 金华市| 浦县| 新建县| 郁南县| 岳西县| 湖南省| 霍城县| 文成县| 大理市| 和龙市| 辽宁省| 霞浦县| 金山区| 营口市| 台北市| 海兴县| 施甸县| 连州市| 阳东县| 开封县| 贺州市| 龙井市| 大港区| 巴塘县| 汝阳县| 应用必备| 富民县| 诸暨市| 安宁市| 乾安县| 金昌市| 喀喇沁旗| 弥勒县| 高淳县| 新密市|