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

C BlowFish對稱加密算法詳解

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

1.算法原理

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

(1)子密鑰

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

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

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

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

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

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

BlowFish由16輪的Fistel網(wǎng)絡(luò)組成,輸入是一個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)讀取方式時,較難識別。

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

相關(guān)文章

  • C++基本用法實踐之移動語義詳解

    C++基本用法實踐之移動語義詳解

    移動(move)語義是C++引入了一種新的內(nèi)存優(yōu)化,以避免不必要的拷貝,下面小編就來和大家簡單聊聊C++中移動語義的相關(guān)使用吧,希望對大家有所幫助
    2023-07-07
  • 解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載

    解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載

    這篇文章主要介紹了解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 深入探討POJ 2312 Battle City 優(yōu)先隊列+BFS

    深入探討POJ 2312 Battle City 優(yōu)先隊列+BFS

    本篇文章是對優(yōu)先隊列+BFS進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言高斯消元法的使用詳解

    C語言高斯消元法的使用詳解

    本篇文章是對C語言中高斯消元法的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • QString和char以及string之間的賦值詳解

    QString和char以及string之間的賦值詳解

    QString 、string 、char* 之間免不了相互賦值。下面是自己的總結(jié)。需要的朋友可以過來參考下
    2013-10-10
  • C語言二叉樹的概念結(jié)構(gòu)詳解

    C語言二叉樹的概念結(jié)構(gòu)詳解

    二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的實現(xiàn)和遍歷,需要的可以參考一下
    2022-08-08
  • Opencv實現(xiàn)輪廓提取功能

    Opencv實現(xiàn)輪廓提取功能

    這篇文章主要為大家詳細(xì)介紹了Opencv實現(xiàn)輪廓提取功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++實現(xiàn)通訊錄管理系統(tǒng)設(shè)計

    C++實現(xiàn)通訊錄管理系統(tǒng)設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)通訊錄管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 基于C語言實現(xiàn)高級通訊錄的示例代碼

    基于C語言實現(xiàn)高級通訊錄的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實現(xiàn)一個高級通訊錄的功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的小伙伴可以參考一下
    2023-01-01
  • 利用C++如何實現(xiàn)一個阻塞隊列詳解

    利用C++如何實現(xiàn)一個阻塞隊列詳解

    這篇文章主要給大家介紹了關(guān)于利用C++如何實現(xiàn)一個阻塞隊列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

昌吉市| 湛江市| 呼伦贝尔市| 沂南县| 达州市| 宣城市| 社旗县| 湘西| 镇巴县| 黔西县| 福贡县| 水富县| 雷波县| 伊宁县| 法库县| 丰顺县| 泽州县| 信宜市| 宣武区| 秦皇岛市| 合江县| 赫章县| 镇坪县| 阜平县| 广宗县| 金坛市| 仲巴县| 河津市| 乌拉特前旗| 汝州市| 湖州市| 松阳县| 新田县| 枞阳县| 乐亭县| 行唐县| 德格县| 原阳县| 新宾| 武定县| 枣阳市|