亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C BlowFish對(duì)稱加密算法詳解

 更新時(shí)間:2021年08月16日 10:37:29   作者:PwnGuo  
這篇文章主要介紹了C BlowFish對(duì)稱加密算法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

1.算法原理

BlowFish算法基于Feistel網(wǎng)絡(luò),加密函數(shù)迭代執(zhí)行16輪,分組長(zhǎng)度為64位,密鑰長(zhǎng)度可以從32位到448位。算法由兩部分組成,密鑰擴(kuò)展部分和數(shù)據(jù)加密部分,密鑰擴(kuò)展部分將最長(zhǎng)最長(zhǎng)為448位的密鑰轉(zhuǎn)化成共4168字節(jié)長(zhǎng)度的子密鑰數(shù)組,其中,數(shù)據(jù)加密由一個(gè)16輪的Feistel網(wǎng)絡(luò)完成,每輪由一個(gè)密鑰相關(guān)置換和一個(gè)密鑰與數(shù)據(jù)相關(guān)的替換組成。

(1)子密鑰

BlowFish算法子密鑰在加密前預(yù)計(jì)算產(chǎn)生。

P數(shù)組由18個(gè)32位字的子密鑰組成。P1,P2''''''.P18

4個(gè)8X32的包含總共1024個(gè)32位字的S-box.

子密鑰擴(kuò)展算法如下:

  1. 按順序使用常數(shù)π的小數(shù)部分初始化P數(shù)組和S-box
  2. 對(duì)P數(shù)組和密鑰進(jìn)行逐位異或,需要時(shí)重用密鑰。
  3. 使用當(dāng)前的P數(shù)組和S-box,對(duì)全0和64位分組使用BlowFish算法進(jìn)行加密,用輸出替代P1,p2,
  4. 使用當(dāng)前的P和S對(duì)第3步的輸出進(jìn)行加密,并輸出替代P3,P4
  5. 繼續(xù)上面的過(guò)程,直到按順序替代所用的P數(shù)組和S-Box中的元素。

2.加密代碼實(shí)現(xiàn)

BlowFish由16輪的Fistel網(wǎng)絡(luò)組成,輸入是一個(gè)64位的數(shù)據(jù)元素X,將X分成兩個(gè)32位部分,XL,XR,加密如下:

void Blowfish_encipher(unsigned long *xl, unsigned long *xr)
{
   unsigned long  Xl;
   unsigned long  Xr;
   unsigned long  temp;
   short          i;
 
   Xl = *xl;
   Xr = *xr;
 
   for (i = 0; i < 16; ++i) {   //16輪的
      Xl = Xl ^ P[i];
      Xr = F(Xl) ^ Xr;
 
      temp = Xl;
      Xl = Xr;
      Xr = temp;
   }
 
   temp = Xl;
   Xl = Xr;
   Xr = temp;
 
   Xr = Xr ^ P[N];
   Xl = Xl ^ P[N + 1];
  
   *xl = Xl;
   *xr = Xr;
}

ANALYZER通過(guò)檢測(cè)4個(gè)8X32的包含總共1024個(gè)32位字的S-box.但通過(guò)動(dòng)態(tài)讀取方式時(shí),較難識(shí)別。

到此這篇關(guān)于C BlowFish對(duì)稱加密算法詳解的文章就介紹到這了,更多相關(guān)C BlowFish對(duì)稱加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的SOAP客戶端

    C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的SOAP客戶端

    這篇文章主要介紹了C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的SOAP客戶端,在C++中,一般使用gSOAP來(lái)實(shí)現(xiàn)客戶端、服務(wù)端,下面一起進(jìn)入文章了解具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • C語(yǔ)言利用cJSON解析JSON格式全過(guò)程

    C語(yǔ)言利用cJSON解析JSON格式全過(guò)程

    cJSON是用于解析json格式字符串的一套api,非常好用,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言利用cJSON解析JSON格式的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼

    C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼

    大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 使用C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    使用C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了使用C語(yǔ)言實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

    C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

    這篇文章主要介紹了C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載

    C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載

    這篇文章主要介紹了C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Qt實(shí)現(xiàn)模糊匹配功能的實(shí)例詳解

    Qt實(shí)現(xiàn)模糊匹配功能的實(shí)例詳解

    對(duì)于瀏覽器的使用,我想大家一定不會(huì)陌生吧,輸入要搜索的內(nèi)容時(shí),會(huì)出現(xiàn)相應(yīng)的匹配信息。本文就來(lái)用Qt實(shí)現(xiàn)模糊匹配功能,感興趣的可以了解一下
    2022-10-10
  • C語(yǔ)言中的函數(shù)指針學(xué)習(xí)筆記

    C語(yǔ)言中的函數(shù)指針學(xué)習(xí)筆記

    這篇文章主要介紹了C語(yǔ)言中的函數(shù)指針的一些學(xué)習(xí)知識(shí)點(diǎn)記錄,文中作者整理了一些比較interesting的函數(shù)指針用法,需要的朋友可以參考下
    2016-04-04
  • 利用C語(yǔ)言實(shí)現(xiàn)經(jīng)典游戲斗獸棋

    利用C語(yǔ)言實(shí)現(xiàn)經(jīng)典游戲斗獸棋

    《斗獸棋》是一款棋類游戲,整個(gè)游戲畫面是分為兩塊區(qū)域,中間有河流分割兩塊區(qū)域,有橋梁可以讓彼此的動(dòng)物過(guò)河,要取得勝利,必須占領(lǐng)那一邊動(dòng)物的巢穴獲勝利。本文將用C語(yǔ)言實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • C++ TensorflowLite模型驗(yàn)證的過(guò)程詳解

    C++ TensorflowLite模型驗(yàn)證的過(guò)程詳解

    這篇文章給大家介紹了C++ TensorflowLite模型驗(yàn)證的過(guò)程,測(cè)試代碼,主要是RunInference()和read_file(),詳細(xì)操作過(guò)程跟隨小編一起看看吧
    2021-08-08

最新評(píng)論