?? 基于狀態機和流水線技術的3des加密算法及其fpga設計-單片機技術1.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.et00.com/mcu/2006/1002/article_3944_2.html -->
<HTML><HEAD><TITLE>基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gbk">
<META content=,最新單片機資料,單片機技術,單片機資料,單片機技術學習,單片機技術 name=keywords>
<META content=最新單片機資料-單片機技術學習資料軟件文章-單片機技術 name=description><LINK
href="/favicon.ico" rel="shortcut icon"><LINK
href="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/style.css" type=text/css
rel=stylesheet>
<SCRIPT language=javascript
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/config.js"></SCRIPT>
<SCRIPT language=javascript
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/common.js"></SCRIPT>
<SCRIPT language=javascript
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/prototype.js"></SCRIPT>
<SCRIPT language=javascript
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/login.js"></SCRIPT>
<META content="MSHTML 6.00.2900.3020" name=GENERATOR></HEAD>
<BODY>
<DIV class=header>
<TABLE class=bg_login cellSpacing=0 cellPadding=0 width=980>
<TBODY>
<TR>
<TD align=middle width=262><!--時間-->
<SCRIPT language=JavaScript
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/time.js"></SCRIPT>
</TD>
<TD align=right width=38><A href="http://www.et00.com/mcu/rss.php?catid=6"
target=_blank><IMG src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/rss.gif"
border=0></A> </TD>
<TD align=right width=650><!--會員登錄--><SPAN id=loginstats></SPAN>
<SCRIPT language=javascript>login();</SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=980 align=center>
<TBODY>
<TR>
<TD align=middle width=180 height=80><A href="http://www.et00.com/"><IMG
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/logo.gif"></A></TD>
<TD align=middle width=620>
<SCRIPT language=JavaScript src=""></SCRIPT>
</TD>
<TD width=100>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD>【<A id=StranLink>繁體中文</A>】</TD></TR>
<TR>
<TD>【<A
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage ('http://www.et00.com');"
href="http://www.et00.com/mcu/2006/1002/article_3944_2.html#">設為首頁</A>】</TD></TR>
<TR>
<TD>【<A
onclick="window.external.addFavorite('http://www.et00.com/','')"
href="http://www.et00.com/mcu/2006/1002/article_3944_2.html#">加入收藏</A>】</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!--頻道列表-->
<DIV id=Whatever align=center>
<UL class=TabBarLevel1 id=TabPage1>
<LI><A href="http://www.et00.com/">首頁</A> </LI>
<LI><A class=white href="http://www.et00.com/article/">技術文章</A> </LI>
<LI><A class=white href="http://www.et00.com/sch/">電路圖資料</A> </LI>
<LI><A class=white href="http://www.d1dz.com/down/">資料下載站</A> </LI>
<LI class=Selected id=Tabi><A class=white
href="http://www.et00.com/mcu/">單片機技術</A> </LI>
<LI><A class=white href="http://www.et00.com/pcb/">PCB技術</A> </LI>
<LI><A class=white href="http://www.et00.com/eda/">EDA技術</A> </LI>
<LI><A class=white href="http://www.et00.com/light/">光電技術</A> </LI>
<LI><A class=white href="http://www.et00.com/service/">維修技術</A> </LI>
<LI><A class=white href="http://www.et00.com/ve/">視頻電子</A> </LI>
<LI><A class=white href="http://www.et00.com/picture/">圖片頻道</A> </LI>
<LI><A class=white href="http://et00z.uu1001.com/">論壇</A> </LI></UL></DIV><!--頻道下屬欄目列表-->
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD class=submenu><A class=white
href="http://www.et00.com/mcu/">單片機技術首頁</A> | <A class=white
href="http://www.et00.com/mcu/n1/" target=_blank>精典單片機資料</A> | <A
class=white href="http://www.et00.com/mcu/n2/" target=_blank>最新單片機資料</A> |
<A class=white href="http://www.et00.com/mcu/special/">專題</A> | <A
class=white
href="http://www.et00.com/mcu/2006/1002/index.php?keyid=5">留言本</A> | <A
class=white href="http://www.et00.com/mcu/add.php">投稿</A> | <A class=white
href="http://www.et00.com/mcu/search.php">搜索</A>
</TD></TR></TBODY></TABLE></DIV>
<DIV class=main>
<TABLE cellSpacing=0 cellPadding=0 width=980>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<SCRIPT type=text/javascript>
function fontZoom(size)
{
$('content').style.fontSize=size+'px';
}
</SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=980>
<TBODY>
<TR>
<TD class=content vAlign=top width=760><!--位置導航-->
<DIV class=position_1>當前位置:<A href="http://www.et00.com/mcu/">單片機技術首頁</A>
>> <A href="http://www.et00.com/mcu/n2/">最新單片機資料</A> >>
基于狀態機和流水線技術的3DES加密算法及其FPGA設計</DIV><!--主標題-->
<H1>基于狀態機和流水線技術的3DES加密算法及其FPGA設計 (2)</H1><!--副標題--><!--文章屬性-->
<DIV id=property>2006-10-02 作者:<A class=member_url
href="http://www.et00.com/member/member.php?username=admin"></A> 來源:<A
href="http://www.et00.com/mcu/2006/1002/article_3944_2.html#"
target=_blank>互聯網</A> 瀏覽次數:<SPAN
id=hits>143</SPAN> 文字大小:【<A
href="javascript:fontZoom(16)">大</A>】【<A
href="javascript:fontZoom(14)">中</A>】【<A
href="javascript:fontZoom(12)">小</A>】</DIV><!--引用地址-->
<DIV class=content_text id=content>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-4170877871798803";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
//2007-03-03: et00ad1
google_ad_channel = "0726147245";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "FF0000";
google_color_text = "0066CC";
google_color_url = "000033";
//--></SCRIPT>
<SCRIPT src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</DIV>
<DIV class=content_text
id=content>費用也較昂貴;而采用FPGA,可由設計者自己對芯片內部單元進行配置,設計比較靈活,只需改變配置就可實現安全不同的功能,大大縮短了設計周期和開發時間,節省人力物力,同時經過優化可以達到較高的性能。另外,有多種EDA開發軟件支持FPGA的設計,在本設計中作者采用了ALTERA公司的Quartus
II開發軟件。
<P></P>
<P style="TEXT-INDENT: 30px">2.2 狀態機和流水線技術的應用</P>
<P
style="TEXT-INDENT: 30px">面積和速度這兩個指標貫穿著FPGA設計的始終,是設計質量評價的終極標準。設計目標就是在滿足給定的時序要求(包含對設計頻率的要求)的前提下,占用較小的芯片面積;或者在所規定的面積下,使設計時序余小量更大,頻率更高。通過功能模塊復用可減少設計消耗的芯片面積;反之,并行復制多個操作模塊可較大地提高設計頻率。在本設計中充分考慮了這一對矜持體,采用狀態機和流水線相結合的技術,使得在減少芯片資源消耗的情況下又能提高設計頻率。</P>
<P
style="TEXT-INDENT: 30px">狀態機是組合邏輯和寄存器邏輯的特殊組合,尤其適合于數字系統的控制設計。系統的狀態在一定的條件下相互轉移。分析DES的算法結構可以發現,輪運算是相同的,只是輸入子密鑰不同,同時各輪的子密鑰都可以通過密鑰移位再經過一個壓縮置換操作直接得到,所以通過密鑰移位現經過一個壓縮置換操作直接得到,所以將輪運算作為一個共享模塊,反復進行該操作,其輸入參數由狀態機控制部分提供,主要是密鑰移位的位數。只在空閑狀態下將輪運算結果輸出。因數據端是16位,故每個狀態機模塊中進行四輪輪運算。<BR><IMG
onmousewheel="return bbimg(this)" onclick=ImgClick(this) height=460
hspace=10
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/20070302060047662.gif"
width=549 vspace=10 border=0 resized="0"><BR></SPAN><FONT
size=3> </FONT><SPAN
class=main1>流水線處理是高速設計中的一個常用設計手段。如果某個設計的處理流程可分為若干步驟,而且整個數據處理是“單流向”的,即沒有反饋,前一個步驟的輸出是下一個步驟的輸入,則可以考慮用流水線設計方法提高系統的工作頻率。流水線設計是一種技巧,它在很長組合路徑的中間點引入寄存器。寄存器會增加等待時間,但卻能增加速度,減少邏輯級。此外,附加寄存器雖然會增加一定的功耗,但卻極大地減少了毛刺。流水線處理方式之所以頻率較高,是因為復制了處理模塊,它是FPGA設計中面積換取速度思想的具體體現。DES的16輪運算結構是相同的,符合流水線設計的要求,所以基于DES的結構特點,將前面的狀態機模塊作為流水線的一個單元,這樣DES共有四個狀態,串聯起來形成四級流水線。因狀態機中有寄存器,能保證流水線的工作,所以各單元間不需再加寄存器。狀態機及流水線結構如圖3所示,圖中給出了由密鑰直接生成各子密鑰的移位數。將DES模塊復制三份,就形成了16級流水線,所不同的是流水線內部是狀態機結構,所以每四個時鐘周期才會得到一組加/解密結果。這種結構同樣適用于數據端是8位和32位的。</P>
<P style="TEXT-INDENT: 30px">2.3 S盒的設計和接口設計</P>
<P
style="TEXT-INDENT: 30px">在3DES算法中,S盒代替是算法的關鍵所在。其它的運算都是線性的,易于分析和實現,而S盒是非線性的,因此S盒的設計和優化將直接影響整個系統的性能。DES的8個S盒都是6輸入、4輸出的結構,適合于用ROM來實現,因此用VHDL定義如下結構設計的ROM:</P>
<P style="TEXT-INDENT: 30px">input:in std_logic_vector(5 downto 0);</P>
<P style="TEXT-INDENT: 30px">output :out std_logic_vector(3 downto 0);</P>
<P style="TEXT-INDENT: 30px">subtype s_word is std_logic_vector(3 downto
0);</P>
<P style="TEXT-INDENT: 30px">subtype s1_rangeij is integer range 0 to
63;</P>
<P style="TEXT-INDENT: 30px">type s_type is array(s1_rangeij) of
s_word;</P>
<P style="TEXT-INDENT: 30px">constant
s:s_type:=(("1110"),("0100"),("1101"),("0001")……);</P>
<P style="TEXT-INDENT: 30px">function logic2int(din:std_logic_vector(t
downto 0))return s1_rangeij -二進轉換為十進制</P>
<P style="TEXT-INDENT: 30px">output<=s(logic2int(input));</P>
<P style="TEXT-IND: " javascript? text>function ImgZoom(Id)//重新設置圖片大小
防止撐破表格 { var w = $(Id).width; var m = 550; if(w < m) { return; } else {
var h = $(Id).height; $(Id).height = parseInt(h*m/w); $(Id).width = m; } }
window.onload = function() { var Imgs =
$("content").getElementsByTagName("img"); var i=0; for(;i<IMGS.LENGTH;I++)
script < } ImgZoom(Imgs[i]); {> <!--自定義字段//-->
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY></TBODY></TABLE><!--自定義字段\\--><!--分頁-->
<DIV class=td_center><A
href="http://www.et00.com/mcu/2006/1002/article_3944_1.html"><IMG
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/page_pre.gif"
align=absMiddle border=0></A> [<A
href="http://www.et00.com/mcu/2006/1002/article_3944_1.html">1</A>]
<STRONG>[2]</STRONG> [<A
href="http://www.et00.com/mcu/2006/1002/article_3944_3.html">3</A>] <A
href="http://www.et00.com/mcu/2006/1002/article_3944_3.html"><IMG
src="基于狀態機和流水線技術的3DES加密算法及其FPGA設計-單片機技術1.files/page_next.gif"
align=absMiddle border=0></A></DIV>
<DIV class=mar_10>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-4170877871798803";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
//2007-03-03: et00ad2
google_ad_channel = "1788660641";
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -