国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于FPGA的DES加解密verilog實現(xiàn)

這篇具有很好參考價值的文章主要介紹了基于FPGA的DES加解密verilog實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、理論基礎(chǔ)

二、核心程序

三、仿真結(jié)論


一、理論基礎(chǔ)

? ? ? ?DES(Data Encryption Standard)是一種對稱密鑰加密算法,是目前應(yīng)用最廣泛的加密算法之一。它是由美國國家標(biāo)準局(National Institute of Standards and Technology,NIST)于1977年發(fā)布并公開的,用于保護計算機系統(tǒng)中的數(shù)據(jù)安全。DES算法采用了分組密碼的技術(shù),將明文按照一定的規(guī)則分組后,經(jīng)過多輪加密運算得到密文。DES算法的密鑰長度為56位,明文分組長度為64位,加密過程中采用了置換、代換、移位、異或等基本操作。

? ? ? ? FPGA(Field Programmable Gate Array)是一種可編程邏輯器件,它可以通過編程實現(xiàn)各種數(shù)字電路的功能。FPGA具有高性能、低功耗、可重配置等優(yōu)點,被廣泛應(yīng)用于數(shù)字信號處理、通信、圖像處理等領(lǐng)域。在加解密算法中,F(xiàn)PGA可以實現(xiàn)高速、低延遲的數(shù)據(jù)加解密運算,具有非常重要的應(yīng)用價值。本文將介紹基于FPGA的DES數(shù)字加解密算法,包括DES算法的原理、FPGA的基本概念、基于FPGA的DES算法實現(xiàn)等內(nèi)容。

DES算法的原理

DES算法的加密過程可以分為以下幾個步驟:

? ? ? ?初始置換(IP),將64位明文按照固定的置換表IP變換為56位數(shù)據(jù)塊。該置換表是由DES算法設(shè)計時確定的,不能改變。

? ? ? ?密鑰的生成,DES算法的密鑰長度為56位,但是實際上只有48位用于加密運算。為了使密鑰更加安全,DES算法采用了密鑰的變換方式,將56位的密鑰變換為16個48位的子密鑰。這個過程是通過將原始密鑰進行置換、分割、移位、壓縮等操作得到的。

分組加密
? ? ? 將初始置換后的明文分為左右兩個32位的數(shù)據(jù)塊,然后對這兩個數(shù)據(jù)塊進行16輪加密運算。每輪加密運算都是將右側(cè)的32位數(shù)據(jù)塊作為輸入,與對應(yīng)的48位子密鑰進行異或運算,然后通過代換、置換等操作得到新的32位數(shù)據(jù)塊,再將左側(cè)的32位數(shù)據(jù)塊與新的右側(cè)32位數(shù)據(jù)塊進行異或運算,最終得到新的左右兩個32位數(shù)據(jù)塊。

逆置換(IP^-1)

? ? ? ?將最后一輪加密得到的左右兩個32位數(shù)據(jù)塊進行合并,然后通過逆置換IP^-1得到最終的64位密文。

DES算法的解密過程與加密過程基本相同,只是子密鑰的使用順序與加密過程相反。

基于FPGA的DES算法實現(xiàn)

基于FPGA的DES算法實現(xiàn)主要包括以下幾個步驟:

確定FPGA的型號和開發(fā)板
? ? ? ?FPGA的型號和開發(fā)板決定了DES算法的實現(xiàn)效率和可擴展性。一般來說,選擇性能較高的FPGA型號和支持高速通信接口的開發(fā)板可以提高DES算法的加解密速度和數(shù)據(jù)處理能力。

設(shè)計DES算法的硬件電路
? ? ? ?DES算法的硬件電路主要包括初始置換(IP)、密鑰生成、分組加密和逆置換(IP^-1)等模塊。這些模塊可以通過可編程邏輯單元(Logic Cell)和塊RAM存儲單元等資源進行實現(xiàn)。其中,密鑰生成和分組加密模塊需要大量的邏輯單元和存儲單元進行實現(xiàn)。

編寫DES算法的控制程序
? ? ? ?DES算法的控制程序主要負責(zé)控制各個模塊的數(shù)據(jù)流動和時序,實現(xiàn)DES算法的全流程。控制程序可以使用硬件描述語言(HDL)進行編寫,如Verilog、VHDL等,也可以使用高級語言(如C語言)進行編寫,然后通過編譯器和綜合工具轉(zhuǎn)換成硬件描述語言。

進行FPGA邏輯電路的布局和布線
? ? ? 布局和布線是將邏輯電路映射到FPGA硬件資源上的過程。布局是將邏輯電路映射到FPGA芯片上的物理位置,布線是將邏輯電路中的信號映射到FPGA芯片上的可編程連接資源上。

進行FPGA邏輯電路的編譯和下載
? ? ? ?編譯是將設(shè)計好的硬件電路轉(zhuǎn)換成FPGA可以識別的二進制文件的過程。下載是將編譯好的

二、核心程序

.........................................................................
always @(  data_i or   key_i or   load_i or   stage1_iter or   data_ready or stage1_R_o or stage1_L_o or stage1_round_key_o)

begin
      
   L_i_var=0;
   R_i_var=0;
   data_i_var=0;
   
   next_ready_o = (0);
   next_data_ready = (data_ready);
   next_stage1_iter = (stage1_iter);

   stage1_L_i = (0);
   stage1_R_i = (0);
   stage1_round_key_i = (0);
	

   key_i_var=key_i;
	
   key_var_perm[55]=key_i_var[7];key_var_perm[54]=key_i_var[15];key_var_perm[53]=key_i_var[23];key_var_perm[52]=key_i_var[31];
   key_var_perm[51]=key_i_var[39];key_var_perm[50]=key_i_var[47];key_var_perm[49]=key_i_var[55];key_var_perm[48]=key_i_var[63];

   key_var_perm[47]=key_i_var[6];key_var_perm[46]=key_i_var[14];key_var_perm[45]=key_i_var[22];key_var_perm[44]=key_i_var[30];
   key_var_perm[43]=key_i_var[38];key_var_perm[42]=key_i_var[46];key_var_perm[41]=key_i_var[54];key_var_perm[40]=key_i_var[62];
	
   key_var_perm[39]=key_i_var[5];key_var_perm[38]=key_i_var[13];key_var_perm[37]=key_i_var[21];key_var_perm[36]=key_i_var[29];
   key_var_perm[35]=key_i_var[37];key_var_perm[34]=key_i_var[45];key_var_perm[33]=key_i_var[53];key_var_perm[32]=key_i_var[61];
   
   key_var_perm[31]=key_i_var[4];key_var_perm[30]=key_i_var[12];key_var_perm[29]=key_i_var[20];key_var_perm[28]=key_i_var[28];
   key_var_perm[27]=key_i_var[1];key_var_perm[26]=key_i_var[9];key_var_perm[25]=key_i_var[17];key_var_perm[24]=key_i_var[25];
   
   key_var_perm[23]=key_i_var[33];key_var_perm[22]=key_i_var[41];key_var_perm[21]=key_i_var[49];key_var_perm[20]=key_i_var[57];
   key_var_perm[19]=key_i_var[2];key_var_perm[18]=key_i_var[10];key_var_perm[17]=key_i_var[18];key_var_perm[16]=key_i_var[26];
   
   key_var_perm[15]=key_i_var[34];key_var_perm[14]=key_i_var[42];key_var_perm[13]=key_i_var[50];key_var_perm[12]=key_i_var[58];
   key_var_perm[11]=key_i_var[3];key_var_perm[10]=key_i_var[11];key_var_perm[9]=key_i_var[19];key_var_perm[8]=key_i_var[27];
   
   key_var_perm[7]=key_i_var[35];key_var_perm[6]=key_i_var[43];key_var_perm[5]=key_i_var[51];key_var_perm[4]=key_i_var[59];
   key_var_perm[3]=key_i_var[36];key_var_perm[2]=key_i_var[44];key_var_perm[1]=key_i_var[52];key_var_perm[0]=key_i_var[60];
   
	
   data_i_var=data_i;
   L_i_var[31]=data_i_var[6];L_i_var[30]=data_i_var[14];L_i_var[29]=data_i_var[22];L_i_var[28]=data_i_var[30];
   L_i_var[27]=data_i_var[38];L_i_var[26]=data_i_var[46];L_i_var[25]=data_i_var[54];L_i_var[24]=data_i_var[62];

   L_i_var[23]=data_i_var[4];L_i_var[22]=data_i_var[12];L_i_var[21]=data_i_var[20];L_i_var[20]=data_i_var[28];
   L_i_var[19]=data_i_var[36];L_i_var[18]=data_i_var[44];L_i_var[17]=data_i_var[52];L_i_var[16]=data_i_var[60];

   L_i_var[15]=data_i_var[2];L_i_var[14]=data_i_var[10];L_i_var[13]=data_i_var[18];L_i_var[12]=data_i_var[26];
   L_i_var[11]=data_i_var[34];L_i_var[10]=data_i_var[42];L_i_var[9]=data_i_var[50];L_i_var[8]=data_i_var[58];

   L_i_var[7]=data_i_var[0];L_i_var[6]=data_i_var[8];L_i_var[5]=data_i_var[16];L_i_var[4]=data_i_var[24];
   L_i_var[3]=data_i_var[32];L_i_var[2]=data_i_var[40];L_i_var[1]=data_i_var[48];L_i_var[0]=data_i_var[56];		   
		   		   
   R_i_var[31]=data_i_var[7];R_i_var[30]=data_i_var[15];R_i_var[29]=data_i_var[23];R_i_var[28]=data_i_var[31];
   R_i_var[27]=data_i_var[39];R_i_var[26]=data_i_var[47];R_i_var[25]=data_i_var[55];R_i_var[24]=data_i_var[63];

   R_i_var[23]=data_i_var[5];R_i_var[22]=data_i_var[13];R_i_var[21]=data_i_var[21];R_i_var[20]=data_i_var[29];
   R_i_var[19]=data_i_var[37];R_i_var[18]=data_i_var[45];R_i_var[17]=data_i_var[53];R_i_var[16]=data_i_var[61];

   R_i_var[15]=data_i_var[3];R_i_var[14]=data_i_var[11];R_i_var[13]=data_i_var[19];R_i_var[12]=data_i_var[27];
   R_i_var[11]=data_i_var[35];R_i_var[10]=data_i_var[43];R_i_var[9]=data_i_var[51];R_i_var[8]=data_i_var[59];

   R_i_var[7]=data_i_var[1];R_i_var[6]=data_i_var[9];R_i_var[5]=data_i_var[17];R_i_var[4]=data_i_var[25];
   R_i_var[3]=data_i_var[33];R_i_var[2]=data_i_var[41];R_i_var[1]=data_i_var[49];R_i_var[0]=data_i_var[57];	


   
   data_o_var_t[63:32]=stage1_R_o;
   data_o_var_t[31:0]=stage1_L_o;
   
   data_o_var[63]=data_o_var_t[24];data_o_var[62]=data_o_var_t[56];data_o_var[61]=data_o_var_t[16];data_o_var[60]=data_o_var_t[48];
   data_o_var[59]=data_o_var_t[8];data_o_var[58]=data_o_var_t[40];data_o_var[57]=data_o_var_t[0];data_o_var[56]=data_o_var_t[32];   
   
   data_o_var[55]=data_o_var_t[25];data_o_var[54]=data_o_var_t[57];data_o_var[53]=data_o_var_t[17];data_o_var[52]=data_o_var_t[49];
   data_o_var[51]=data_o_var_t[9];data_o_var[50]=data_o_var_t[41];data_o_var[49]=data_o_var_t[1];data_o_var[48]=data_o_var_t[33];
   
   data_o_var[47]=data_o_var_t[26];data_o_var[46]=data_o_var_t[58];data_o_var[45]=data_o_var_t[18];data_o_var[44]=data_o_var_t[50];
   data_o_var[43]=data_o_var_t[10];data_o_var[42]=data_o_var_t[42];data_o_var[41]=data_o_var_t[2];data_o_var[40]=data_o_var_t[34];
   
   data_o_var[39]=data_o_var_t[27];data_o_var[38]=data_o_var_t[59];data_o_var[37]=data_o_var_t[19];data_o_var[36]=data_o_var_t[51];
   data_o_var[35]=data_o_var_t[11];data_o_var[34]=data_o_var_t[43];data_o_var[33]=data_o_var_t[3];data_o_var[32]=data_o_var_t[35];
   
   data_o_var[31]=data_o_var_t[28];data_o_var[30]=data_o_var_t[60];data_o_var[29]=data_o_var_t[20];data_o_var[28]=data_o_var_t[52];
   data_o_var[27]=data_o_var_t[12];data_o_var[26]=data_o_var_t[44];data_o_var[25]=data_o_var_t[4];data_o_var[24]=data_o_var_t[36];   
   
   data_o_var[23]=data_o_var_t[29];data_o_var[22]=data_o_var_t[61];data_o_var[21]=data_o_var_t[21];data_o_var[20]=data_o_var_t[53];
   data_o_var[19]=data_o_var_t[13];data_o_var[18]=data_o_var_t[45];data_o_var[17]=data_o_var_t[5];data_o_var[16]=data_o_var_t[37];
   
   data_o_var[15]=data_o_var_t[30];data_o_var[14]=data_o_var_t[62];data_o_var[13]=data_o_var_t[22];data_o_var[12]=data_o_var_t[54];
   data_o_var[11]=data_o_var_t[14];data_o_var[10]=data_o_var_t[46];data_o_var[9]=data_o_var_t[6];data_o_var[8]=data_o_var_t[38];
   
   data_o_var[7]=data_o_var_t[31];data_o_var[6]=data_o_var_t[63];data_o_var[5]=data_o_var_t[23];data_o_var[4]=data_o_var_t[55];
   data_o_var[3]=data_o_var_t[15];data_o_var[2]=data_o_var_t[47];data_o_var[1]=data_o_var_t[7];data_o_var[0]=data_o_var_t[39];
   
   next_data_o = (data_o_var);
   
   stage1_iteration_i = (stage1_iter);

   next_ready_o = (0);	 	 
   stage1_L_i = (stage1_L_o);
   stage1_R_i = (stage1_R_o);
   stage1_round_key_i = (stage1_round_key_o);
    
   case(stage1_iter)
	
     0:
     begin
       if(load_i)
       begin
         next_stage1_iter = (1);
         stage1_L_i = (L_i_var);
         stage1_R_i = (R_i_var);
         stage1_round_key_i = (key_var_perm);
         next_data_ready = (0);
       end
       else if (!data_ready)
       begin

         next_stage1_iter = (0);	
         next_ready_o = (1);
         next_data_ready = (1);			 
       end
	 end
       
     15:
       next_stage1_iter = (0);
       
     default:	
       next_stage1_iter = (stage1_iter+1);		 
   
   endcase
 
end

endmodule
up217

三、仿真結(jié)論

基于FPGA的DES加解密verilog實現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-494348.html

到了這里,關(guān)于基于FPGA的DES加解密verilog實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C語言如何實現(xiàn)DES加密與解密

    C語言如何實現(xiàn)DES加密與解密

    在工作中遇到的Des解密問題,第三方發(fā)來的數(shù)據(jù)需要我們進行des解密,但是解密的結(jié)果前幾位始終是亂碼。廢了半天勁,終于找到了問題所在。 下面先介紹一下des,了解des的同學(xué)可以直接看下面的解決辦法。 Des加密 DES全稱為Data EncryptionStandard,即數(shù)據(jù)加密標(biāo)準。Des加密算法

    2024年02月12日
    瀏覽(21)
  • 關(guān)于怎么使用python實現(xiàn) 3DES 加密/解密

    3DES (Triple DES) 是一種對稱加密算法,其特點是使用三次密鑰加密來提高安全性。 3DES的原理是:對明文進行三次加密,每次加密的密鑰不同。加密時,首先使用第一個密鑰對明文進行加密,然后使用第二個密鑰對加密后的數(shù)據(jù)進行解密,最后再使用第三個密鑰對解密后的數(shù)據(jù)

    2024年02月15日
    瀏覽(22)
  • 如何實現(xiàn) DES 加密,解密(uniapp/vue) + Java)

    如何實現(xiàn) DES 加密,解密(uniapp/vue) + Java)

    目錄 ?一、引言 二、 什么是DES? ?三、實際操作 ?1. Uniapp 進行 des 加密/解密 ?2. Java 進行 des 加密/解密 ????????現(xiàn)如今,加密是對數(shù)據(jù)安全處理的基本手段之一。今天我們的背景就是微信開發(fā)中,涉及到支付時用戶個人信息的權(quán)限認證操作。今天使用的就是通過DES算法進

    2024年02月04日
    瀏覽(32)
  • 基于FPGA的移相波束形成verilog實現(xiàn)

    歡迎訂閱《FPGA學(xué)習(xí)入門100例教程》、《MATLAB學(xué)習(xí)入門100例教程》 目錄 一、理論基礎(chǔ) 二、核心程序 三、測試結(jié)果

    2023年04月08日
    瀏覽(23)
  • C#與Node JS互相實現(xiàn)DES加密解密

    C#與Node JS互相實現(xiàn)DES加密解密

    具體的加密算法可以可自行查詢其區(qū)別,這里只是拋磚引玉,大部分加密方法基本都能通過改變傳入?yún)?shù)來實現(xiàn)。 C#相關(guān)類文檔:?System.Security.Cryptography 命名空間 | Microsoft Learn Node JS相關(guān)文檔:Crypto | Node.js v16.20.0 Documentation (nodejs.org) ? C#加密函數(shù): ? 控制臺輸出為 ? Node J

    2024年02月06日
    瀏覽(39)
  • DES的加密與解密(C語言實現(xiàn))——大三密碼學(xué)實驗

    DES的加密與解密(C語言實現(xiàn))——大三密碼學(xué)實驗

    目錄 DES的描述 Feistel體制 密鑰擴展函數(shù) F函數(shù) 總流程? 代碼 get函數(shù)的構(gòu)建 yihuo函數(shù)的構(gòu)建 fuck函數(shù)的構(gòu)建 left_move函數(shù)的構(gòu)建 exchange函數(shù)的構(gòu)建 erzhuanshi函數(shù)的構(gòu)建 shizhuaner函數(shù)的構(gòu)建 s_box函數(shù)的構(gòu)建 主函數(shù)的構(gòu)建 總函數(shù) 運行結(jié)果示例 DES: 16 輪, Feistel 型結(jié)構(gòu) 明文長度:

    2024年02月07日
    瀏覽(26)
  • 【FPGA教程案例40】通信案例10——基于FPGA的簡易OFDM系統(tǒng)verilog實現(xiàn)

    FPGA教程目錄 MATLAB教程目錄 --------------------------------------------------------------------------------------- 目錄 1.軟件版本 2.OFDM原理 3.OFDM系統(tǒng)的verilog實現(xiàn)

    2024年02月12日
    瀏覽(31)
  • AES算法基于FPGA的硬件實現(xiàn)(3)AES算法的Verilog實現(xiàn)(完結(jié))

    AES算法基于FPGA的硬件實現(xiàn)(3)AES算法的Verilog實現(xiàn)(完結(jié))

    本設(shè)計實現(xiàn)AES加密算法為ecb模式,填充模式未設(shè)置,同時支持AES-128/192/256三種密鑰長度。 代碼完全開源,開源鏈接在文章末尾。 下圖為GitHub倉庫中上傳的文件第一級結(jié)構(gòu),第一級為matlab和user,matlab中存儲的是在進行列混淆運算時查表所用的coe文件,這些文件用來初始化viv

    2024年01月18日
    瀏覽(22)
  • 基于FPGA和Verilog實現(xiàn)的9層電梯控制器仿真設(shè)計

    基于FPGA和Verilog實現(xiàn)的9層電梯控制器仿真設(shè)計

    資源下載地址:https://download.csdn.net/download/sheziqiong/85628810 資源下載地址:https://download.csdn.net/download/sheziqiong/85628810 電梯最少可以往返于0—9層樓。 乘客要去的樓層數(shù)A可手動輸入并顯示,按取消鍵可清除本次輸入。 可自動顯示電梯運行的樓層數(shù)B 當(dāng)AB時,電梯上升; 當(dāng)AB時,

    2024年02月02日
    瀏覽(31)
  • 基于FPGA的信號處理算法,F(xiàn)FT法相差檢測verilog實現(xiàn)

    基于FPGA的信號處理算法,F(xiàn)FT法相差檢測verilog實現(xiàn)

    基于FPGA的信號處理算法,F(xiàn)FT法相差檢測verilog實現(xiàn) 。 1.硬件平臺:altera芯片 2.軟件平臺:Quartusii 13.1 Verilog 3.實現(xiàn)功能:檢測兩路正弦波的相位差 基于FPGA的信號處理算法,F(xiàn)FT法相差檢測verilog實現(xiàn) 引言 在現(xiàn)代通信系統(tǒng)中,信號處理算法在實時性和精度方面面臨著巨大的挑戰(zhàn)。

    2024年04月16日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包