欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C BlowFish對稱加密算法詳解

 更新時間:2021年08月16日 10:37:29   作者:PwnGuo  
這篇文章主要介紹了C BlowFish對稱加密算法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

1.算法原理

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

(1)子密鑰

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

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

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

子密鑰擴展算法如下:

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

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

BlowFish由16輪的Fistel網(wǎng)絡組成,輸入是一個64位的數(shù)據(jù)元素X,將X分成兩個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通過檢測4個8X32的包含總共1024個32位字的S-box.但通過動態(tài)讀取方式時,較難識別。

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

相關文章

  • C++實現(xiàn)一個簡單的SOAP客戶端

    C++實現(xiàn)一個簡單的SOAP客戶端

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

    C語言利用cJSON解析JSON格式全過程

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

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

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

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

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

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

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

    C++ 基礎編程之十進制轉換為任意進制及操作符重載

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

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

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

    C語言中的函數(shù)指針學習筆記

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

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

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

    C++ TensorflowLite模型驗證的過程詳解

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

最新評論