📄 基于状态机和流水线技术的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 + -