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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

BlowFish

發(fā)布時(shí)間:2024/9/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BlowFish 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Blowfish是布魯斯·施奈爾于1993年開(kāi)發(fā)的區(qū)塊加密算法,對(duì)稱加密的一種。

外文名

Blowfish

提出者

布魯斯·施奈爾

提出時(shí)間

1993年

屬????性

區(qū)塊加密算法

屬????于

對(duì)稱加密的一種

學(xué)????科

密碼學(xué)

目錄

  • 1?概要
  • 2?算法說(shuō)明
  • 3?算法解密
  • 概要

    編輯

    Blowfish是一個(gè)對(duì)稱加密塊算法,由Bruce Schneider于1993年設(shè)計(jì),現(xiàn)已應(yīng)用在多種加密產(chǎn)品。Blowfish能保證很好的加密速度,并且目前為止沒(méi)有發(fā)現(xiàn)有效地破解方法。目前為止AES比Blowfish有更廣的知名度。

    Schneider 設(shè)計(jì)的Blowfish算法用途廣泛,意在摒棄DES的老化以及其他算法的強(qiáng)制捆綁。Blowfish剛剛研發(fā)出的時(shí)候,大部分其他加密算法是專利所有的或?qū)儆谏虡I(yè)(政府)機(jī)密,所以發(fā)展起來(lái)非常受限制。Schneider 則聲明 Blowfish 的使用沒(méi)有任何限制,任何國(guó)家任何人任何時(shí)候都可以隨意使用 Blowfish算法。

    Blowfish 主要包括關(guān)鍵的幾個(gè)S盒和一個(gè)復(fù)雜的核心變換函數(shù)。

    BlowfishAdvancedCS是一個(gè)新的文件加密工具,它支持七種以上的算法,能將數(shù)據(jù)有效的壓縮,而且使用安全的金鑰來(lái)把守防止數(shù)據(jù)被破解,同時(shí)加密之后文件不會(huì)露出蛛絲馬跡,不容易用各種軟件找到破解線索,并且能與Windows文件總管做整合,設(shè)定每日自動(dòng)檔案加密工作。

    BlowfishAdvancedCS軟件支持的功能主要有加密(Encrypt)、解密(Decrypt)、消除數(shù)據(jù)(Wipe),在檔案加密的同時(shí)可以設(shè)定開(kāi)啟密碼,也能壓縮數(shù)據(jù),或者更改文件名,更改之后的檔名通常以無(wú)意義的隨機(jī)數(shù)文件名為主,若不更改文件名則加密之后會(huì)改以擴(kuò)展名bfa來(lái)儲(chǔ)存,因此不容易被人察覺(jué),要解密時(shí)只要輸入密碼并且使用本軟件選擇相同的算法即可。

    算法說(shuō)明

    編輯

    BlowFish算法用來(lái)加密64Bit長(zhǎng)度的字符串。?[1]?

    BlowFish算法使用兩個(gè)“盒”——unsignedlongpbox[18]和unsignedlongsbox[4,256]。

    BlowFish算法中,有一個(gè)核心加密函數(shù):BF_En(后文詳細(xì)介紹)。該函數(shù)輸入64位信息,運(yùn)算后,以64位密文的形式輸出。用BlowFish算法加密信息,需要兩個(gè)過(guò)程:密鑰預(yù)處理和信息加密。

    分別說(shuō)明如下:

    密鑰預(yù)處理:

    BlowFish算法的源密鑰——pbox和sbox是固定的。我們要加密一個(gè)信息,需要自己選擇一個(gè)key,用這個(gè)key對(duì)pbox和sbox進(jìn)行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化算法如下:

    1)用sbox填充key_sbox

    2)用自己選擇的key8個(gè)一組地去異或pbox,用異或的結(jié)果填充key_pbox。key可以循環(huán)使用。

    比如說(shuō):選的key是"abcdefghijklmn"。則異或過(guò)程為:

    key_pbox[0]=pbox[0]abcdefgh;

    key_pbox[1]=pbox[1]ijklmnab;

    …………

    …………

    如此循環(huán),直到key_pbox填充完畢。

    3)用BF_En加密一個(gè)全0的64位信息,用輸出的結(jié)果替換key_pbox[0]和key_pbox[1],i=0;

    4)用BF_En加密替換后的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];

    5)i+2,繼續(xù)第4步,直到key_pbox全部被替換;

    6)用key_pbox[16]和key_pbox[17]做首次輸入(相當(dāng)于上面的全0的輸入),用類似的方法,替換key_sbox信息加密。

    信息加密就是用函數(shù)把待加密信息x分成32位的兩部分:xL,xRBF_En對(duì)輸入信息進(jìn)行變換。

    算法解密

    編輯

    用BlowFish算法解密,同樣也需要兩個(gè)過(guò)程。

    1.密鑰預(yù)處理

    2.信息解密

    密鑰預(yù)處理的過(guò)程與加密時(shí)完全相同,信息解密的過(guò)程就是把信息加密過(guò)程的key_pbox逆序使用即可??梢钥闯?#xff0c;選擇不同的key,用BlowFish算法加密同樣的信息,可以得出不同的結(jié)果。要破解BlowFish算法,就是要得到BlowFish算法的key。所以,使用BlowFish算法進(jìn)行加密,最重要的也就是key的選擇以及key的保密。其中key的選擇可以使用bf_sdk中的_WeakKey函數(shù)進(jìn)行檢驗(yàn)。以下是該函數(shù)的說(shuō)明:

    源文:

    _WeakKey

    Function:TestifthegeneratedBoxesareweak

    Argument:none

    Return:AX=Status(1=weak,0=good)

    Affects:AX,BX,CX,DX,SI,DI,directionFlag

    Description:After"_InitCrypt"youshouldtesttheBoxeswiththisfunction.

    Iftheyprovideaweaknesswhichacryptoanalystcoulduseto

    breaktheciphera"1"isreturned.Inthiscaseyoushould

    reloadtheoriginalboxesandlettheuserchooseadifferent

    password.

    譯文:

    _WeakKey

    功能:測(cè)試產(chǎn)生的box是否安全

    參數(shù):無(wú)

    返回:AX=1不安全;AX=0安全

    影響:AX,BX,CX,DX,SI,DI,方向標(biāo)志

    描述:使用"_InitCrypt"函數(shù)產(chǎn)生用于加密的Boxes后,你應(yīng)該用這個(gè)函數(shù)測(cè)試產(chǎn)生的Boxes是否安全,如果該key產(chǎn)生的Boxes不安全——可以被密碼分析者通過(guò)分析Boxes得到key,那么,你應(yīng)該采用另外一個(gè)key產(chǎn)生一個(gè)安全的Boxes用來(lái)加密。

    總結(jié)

    以上是生活随笔為你收集整理的BlowFish的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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