




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IVDES加密技术毕业设计论文摘要随着信息技术的发展,计算机应用渗透到社会生活的各个领域,人们对信息化的依赖程度越来越高,随之而来的安全性问题成为人们关注的热点。数据加密技术作为信息安全中的重要武器,发挥着越来越大的作用。DES(DateEncryptionStandard)算法从成为加密标准到现在,已经成功在应用在了很多领域并且经历了长期的考验。实践证明,DES算法对于大部分的应用来说,还是足够安全的。本论文首先介绍VerilogHDL语言及其实用软件,然后介绍DES加密算法原理;接着介绍DES加密模块的三大底层模块的原理与设计;最后介绍了顶层模块的调用与设计,测试文件的编写,从整体上完成了对DES加密模块的实现。本文通过VerilogHDL语言来实现DES加密模块的设计与仿真。本设计采用自顶而下的模块化设计方法将DES加密模块划分为四大模块,其中包括三个底层模块:密钥产生模块key_gen、S部件代换模块(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一轮变换模块desround,还含有一个顶层调用模块,整体的调用三个底层模块用来实现DES加密模块的功能。关键词:DES;加密;VerilogHDL
AbstractWiththedevelopmentofinformationtechnology,theapplicationofcomputerhascameintoanyfield.People’sdependenceoninformationtechnologyisbecomingmore.Followedbytheissueofsecurityhasalsobecomeahotspotofconcerntothepeople.Encryptiontechnology,asanimportantweaponofinformationsecurity,isplayinganincreasinglyimportantrole.DES(DateEncryptionStandard)encryptionalgorithmfrombecomingthestandardtothepresent,hasbeensuccessfullyusedinalotintheareaandhasexperiencedlong-termtest.Practicehasprovedthat,DESalgorithmformostoftheapplicationsoradequateissecurity.ThispaperintroducesVerilogHDLlanguageanditsutilitysoftware,andintroducestheDESalgorithm,andthenintroducestheDESencryptionmodulethethreeunderlyingmodulesprinciplesanddesign.Finally,itintroducesthetop-levelmoduleanditsdesignaswellasthetestdocumentation,andachievesthewholeDESencryptionmoduleThroughtheVerilogHDLlanguage,thispaperachievesDESencryptionmoduledesignandsimulation.Thedesignusesatop-downmodulardesignmethodtoDESencryptionmodule,itisdividedinto4modules,whichcontainsthreebottommodules:keygenerationmodule,SmoduleandonetransformationmoduleofDES,anditalsocontainsatop-levelmodulewhichcallsthebottomoftheoverallthreemodulesforthefunctionofDESencryptionmodule.KeyWords:DES;encryption;VerilogHDL
目录1绪论 11.1信息安全的现状 11.2DES加密技术的现状和发展 21.3设计语言及设计工具 31.3.1VerilogHDL语言介绍 31.3.2设计工具 72DES加密算法原理 82.1DES加密算法简介 82.2DES算法子密钥Kn的产生 82.3DES加密算法的加密数据块 92.4解密程序设计 123DES加密模块的设计 143.1DES加密模块总体构架 143.2密钥产生模块key_gen设计 153.3S部件代换模块设计 173.4desround模块设计 183.5DES顶层模块des设计 224DES加密模块仿真及综合 264.1DES加密及解密仿真 264.1.1DES加密模块仿真步骤 264.1.2 DES加密及解密仿真结果 284.2DES加密模块综合 294.2.1综合工具synplify介绍 294.2.2综合结果 29结论 31致谢 32参考文献 33附录A英文原文 34附录B中文译文 43附录C程序代码 501绪论1.1信息安全的现状美国著名未来学家阿尔温·托夫勒说:“电脑网络的建立和普及将彻底改变人类生存及生活的模式,控制与掌握网络的人就是未来命运的主宰。谁掌握了信息,控制了网络,谁就拥有整个世界。”的确,网络的国际化、社会化、开放化、个人化诱发出无限的商机,电子商务的迅速崛起,使网络成为国际竞争的新战场。各种信息的传播越来越便捷。在当今的信息时代,大量敏感信息如法庭记录、资金转移、私人财产、个人隐私等常常通过公共通信设施或者计算机网络来进行交换,而这些信息的秘密性和真实性是人们迫切需要的。然而,由于安全技术本身的缺陷,使得信息传播的脆弱性大大增加,一旦信息传播的途径与方式受到攻击,轻则对个人的工作、生活产生重大影响。严重时甚至会危害国家安全,使整个社会陷入危机。所以,构筑安全的电子信息环境,愈来愈受到国际社会的高度关注。不安全的信息还不如没有信息。一个不设防的信息传播方式,一旦遭到恶意攻击,将意味着一场灾难。对于信息的传播,需要居安思危、未雨绸缪,克服脆弱、克制威胁,防患于未然。信息安全是对付威胁、克服脆弱性、保护各种信息资源的所有措施的总和,涉及政策、法律、管理、教育和技术等方面的内容。信息安全是一项系统工程,针对来自不同方面的安全威胁,需要采取不同的安全对策。从法律、制度、管理和技术上采取综合措施,以便相互补充,达到较好的安全效果。管理是所有安全领域的重要组成部分,而技术措施是最直接的屏障,目前常用而有效的信息安全技术对策有如下几种:加密、数字签名、鉴别、访问控制、防火墙、安全审计、数据备份与恢复等等。在这些对策中,加密无疑是所有信息保护措施中最古老,最基本的方法。加密的主要目的是防止信息的非授权泄漏。加密方法多种多样,在信息网络中一般是利用信息变换规则把可靠的信息变成不可懂的信息。既可对传输信息加密,也可对存储信息加密,把计算机数据变成一堆杂乱无章的数据,攻击者即使得到加密的信息,也不过是一串毫无意义的字符。加密可以有效的对抗截收、非法访问等威胁。现代密码算法不仅可以实现加密,还可以实现数字签名,鉴别等功能,有效地对抗截收、非法访问、破坏信息的完整性、冒充、抵赖、重演等威胁,因此,加密技术是网络信息安全的核心技术。社会信息化步伐的不断加快,极大地推动了信息安全技术的核心技术——现代密码学的发展。现代密码学的应用已经涵盖了军事、政治、外交、金融、商业等众多领域,其商用价值和社会价值得到了充分的肯定。为密码理论与技术的应用提供了广阔的前景。1.2DES加密技术的现状和发展在我国金卡工程中广泛采用的DES算法。全称为数据加密标准(DateEncryptionStandard)。它是一种对二元数据进行加密的算法.属于分组密码算法中最有名的两种常规密码算法之一。DES算法以密钥作为加密方法的加密手段,在此标准下可产生72,057,594,037,927,936≈7.2X106(72Q)个密钥供用户使用。用户密钥在这72Q个密钥中随机生成.若在不知密钥情况下进行破译,即使用每微秒可以进行一次DES加密的机器来破译密码也需要超过两千年,故具有极高的保密性和安全性。由于加密方和解密方必须使用相同的密钥DES算法又属于对称算法。数据加密标准DES就是一种在传输和存储数据中保护计算机数据的密码算法。数据加密标准DES是由美国IBM公司研制,是早期的称作Lucifer密码的一种发展和修改。DES于1977年1月15日正式被批准作为美国联邦信息处理标准,同年7月15日开始生效。虽然在1994年1月的评估后,美国已经决定1998年12月以后就不再使用DES(2000年10月,NIST决定选用Rijndael密码作为高级加密标准AES),然而数据加密标准(DataEncryptionStandard,DES),作为ANSI的数据加密算法(DataEncryptionAlgorithm,DEA)和ISO的DEA-1,成为一个世界范围内的标准己经20多年了。尽管它带有过去时代的特征,但它很好地抗住了多年的密码分析,除可能的最强有力的敌手外,对其他的攻击仍然是安全的。DES是一个分组加密算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。DES又是一个对称算法:加密和解密用的是同一种算法。密钥的长度为56位(密钥通常表示为64的数,但每个第8位都用作奇偶校验,可以忽略)。密钥可以是任意的56位的数,且可在任意的时候改变。其中极少量的数被认为是弱密钥,但能容易地避开它们。所有的保密性依赖于密钥。目前,基于DES算法的安全协议广泛地应用于军事,卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中。在应用中,由于DES算法的密钥长度只有64位(实际上还包还了8位的奇偶校验位,因此密钥有效长度只有56位),随着计算机技术和破解技术的进步,人们不断提出新的方法增强DES算法的加密强度,如3重DES算法、带有交换S盒的DES算法等.因此DES算法在信息安全领域仍有广泛地应用。采用软件方式实现的DES算法会在很大程度上占用系统资源,造成系统性能的严重下降,尤其是在实现TDES算法时需要更多的运算时间和系统资源。而且通过软件的方法实现DES算法,给攻击者留下了更多的施展空间。而DES算法本身并没有大量的复杂数学计算(如乘、带进位的加、模等运算),在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算,因而,无论是从系统性能还是加/解密速度的角度来考虑,采用硬件实现都是一个理想的方案。因此,现在越来越多的系统都采用了硬件方式的DES加密方案。1.3设计语言及设计工具1.3.1VerilogHDL语言介绍硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路结构。VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间.数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。VerilogHDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,VerilogHDL语言提供了编程语言接口(PLI),通过该接口可以在模拟、验证期间从设计外部访问设计包括模拟的具体控制和运行。VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语句。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说己经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。1、VerilogHDL的产生VerilogHDL语言最初是于1983年由GatewayDesignAutotnatian公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛使用,VerilogHDL作为一种便于使用且实用的语言逐渐为众多设计者所接受。1989年,Cadence公司收购了GDA公司,VerilogHDL语言成为Cadence公司的私有财产。1990年,为了促进VerilvgHDL语言的发展,Cadence公司决定公开VerilogHDL语言,于是成立了OpenVerilogInternational(OVI)组织,1992年,OVI决定推广VerilogOVI标准成为IEEE标准。这一努力最后获得成功,Verilog语言于1995年成为IEEE标准。在这个标准中,加入了VerilogHDL-A标准,使Verilog有了模拟设计描述的能力。完整的标准在Verilog硬件描述语言参考手册中有详细描述。2、VerilogHDL的主要功能下面列出的是Verilog硬件描述语言的主要功能:•基本逻辑门,例如and,or和nand等都内置在语言中。•用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。•开关级基本结构模型,例如pmos和nmos等也被内置在语言中。•提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。•可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式一使用连续赋值语句方式建模、结构化方式—使用门和模块实例语句描述建模。•VerilogHDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。•能够描述层次设计,可使用模块实例结构描述任何层次。•设计的规模可以是任意的:语言不对设计的规模(大小)施加任何限制。•VerilogHDL不再是某些公司的专有语言而是iEEE标准。•人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。•VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。•设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。•能够使用内置开关级原语在开关级对设计完整建模。•同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。•VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。•在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。•能够使用门和模块实例化语句在结构级进行结构描述。且在一个设计中每个模块均可以在不同设计层次上建模。•VerilogHDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。•支持高级编程语言结构,例如if语句、case语句和循环语句。•可以显式地对并发和定时进行建模。•通过系统函数提供强有力的文件读写能力。•语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如:事件队列上的事件顺序在标准中没有定义。3、设计层次与选用的语言按传统方法,我们将硬件抽象级的模型类型分为以下五种:系统级(system)—用语言提供的高级结构实现算法运行的模型。算法级(algorithm)—用语言提供的高级结构实现算法运行的模型。RTL级(RegisterTransferLevel)—描述数据在寄存器之间流动和如何处理、控制这些数据流动的模型。(以上三种都属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。)门级(gate-level)—描述逻辑门以及逻辑门之间的连接模型,与逻辑电路有确切的连接关系。开关级(switch-level)—描述器件中三极管和存储节点以及它们之间连接的模型,与具体的物理电路有对应关系。根据目前芯片设计的发展趋势,验证级和综合抽象级也有可能成为一种标准级别。因为它们适合于iP核复用和系统级仿真综合优化的需要,而软件(嵌入式、固件式)也越来越成为一个和系统密切相关的抽象级别口。除了VerilogHDL外,还有下面几种比较常用的HDL:(1)VHDL,是1980年因为美国军事工业的需要由美国国防部开发的,1987年由IEEE(InstituteofElectricalandElectronicsEngineers)将VHDL制定为标准,称为IEEEl076-1987。第二个版本是在1993年制定的,称为VHDL-93,增加了一些新的命令和属性。(2)Superlog,是为了在原有硬件描述语言的基础上,结合高级语言C,C++甚至Java等语言的特点,进行扩展,达到的一种新的系统级设计语言标准,在1999年由Co-Design公司发布,同时发布了两个开发工具:SYSTEMSIM和SYSTEMX。一个用于系统级开发,一个用于高级验证。2001年,Co-Design公司向电子产业标准化组织Accellera发布了Superlog扩展综合子集ESS,使其可以为各种系统级的EDA软件工具所利用。(3)SystemC,是一种能同时实现较高层次的软件和硬件描述的系统级设计语言,由Synopsys公司和CoWare公司积极响应目前各方对系统级设计语言的需求而合作开发的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半导体公司和嵌入式软件公司宣布成立“开放式SystemC联盟”。Cadence公司也于2001年加入了SystemC联盟。所有的SystemC目前,对于一个系统芯片设计项目,可以参考以下几种设计方案:①在系统级采用VHDL,在软件级采用C语言,在实现级采用Verilog。目前,VHDL与Verilog的互操作性已经逐步走向标准化,但软件与硬件的协调设计还是一个很具挑战性的工作,因为软件越来越成为SvC设计的关键。该方案的特点是:风险小、集成难度大,与原有方法完全兼容,有现成的开发工具;但工具集成由开发者自行负责完成。②系统级及软件级采用Superlog,硬件级和实现级均采用VerilogHDL描述,这样和原有的硬件设计可以兼容。只要重新采购两个Snperlog开发工具SYSTEMSIM和SYSTEMEX即可。该方案特点是风险较小,易于集成,与原硬件设计兼容性好,有集成开发环境。③系统级和软件级采用SystemC,硬件级采用SystemC与常规的VerilogHDL互相转换,与原来的软件编译环境完全兼容。开发者只需要一组描述类库和一个包含仿真核的库,就可以在通常的ANSIC++编译器环境下开发;但硬件描述与原有方法完全不兼容。该方案特点是风险较大,与原软件开发兼容性好,硬件开发有风险。1.3.2设计工具在本设计中选用的仿真器用到Modelsim6.1。Modelsim不仅可以完成设计的功能验证,也可以实现逻辑综合后的门级仿真以及布局布线后的功能和时序验证。Modelsim主要特点有:(1)完全支持VerilogHDL和VHDL标准;(2)采用直接编辑技术(Direct-Compiled),大大提高HDL编译和仿真速度;(3)唯一支持VHDL和VerilogHDL混合描述的仿真工具;(4)支持RTL级和门级验证,支持VITAL,SDF等;(5)具有友好的用户界面,仿真器包括主控窗口、源码窗口、仿真波形窗口、列表窗口、数据流窗口、设计结构窗口、过程管理窗口等;(6)支持单步调试,断点设置,批命令处理方式,帮助设计师快速完成设计调试和验证;(7)即插即用,可与其它工具结合,完成各种流程;(8)支持UNIX和Window95/XP平台,不同平台间具有相同的用户界面和数据库。2DES加密算法原理2.1DES加密算法简介数据加密标准DES(DataEncryptionStandard)算法是一个分组加密算法,也是一个对称算法,加密和解密使用同一个算法,利用传统的换位、异或、置换等加密方法。DES算法以64位(8byte)为分组对数据加密,其中有8位(第8、16、24、32、40、48、56和64位)用作奇偶校验位,另外的56位为真正的密钥,保密性依赖于密钥,加密和解密过程使用同一个密钥。DES首先对64位的明文数据分组进行操作,通过一个初始置换,将明文分组等分成左、右两半部分,然后进行16轮完全相同的运算,在每一轮运算中,对密钥位进行移位,再从56位密钥中选出48位;同时通过一个扩展置换将数据的右半部分扩展成48位,再通过异或操作与计算得到的48位子密钥结合,并通过8个S盒将这48位替代成新的32位数据,再将其置换一次。然后,通过另一个异或运算,将运算函数f的输出与左半部分结合,其结果成为新的右半部分,旧的右半部分成为新的左半部分。将该操作重复16次,便实现了DES的16轮运算。经过16轮后,左、右半部分合在一起,最后再通过一个逆初始置换(初始置换的逆置换),这样就完成DES加密算法。2.2DES算法子密钥Kn的产生DES加密算法的具体过程描述如下:计算密钥Ki对64位密钥而言,因为每个字节的第8位为校验位,故密钥由64位减至56位,而16个子密钥Ki(i值从1到16)是在DES算法中的每一轮运算中,从56位密钥产生出的不同的48位子密钥。产生方式如下:首先进行密钥置换,使得密钥的各个位与原密钥位对应关系表如图2.1所示。图2.1密钥置换接着把经过置换后的56位密钥等分成两部分,其中前28位记为C[0],后28位记为D[0]。然后从i=1开始,分别对C[i-1],D[i-1]做循环左移来生成C[i],D[i]。每次循环左移位数,这两部分分别循环左移1位或2位,如图2.2所示。图2.2循环左移然后串联C[i],D[i],就可以得到一个56位数,对此操作如图2.3所示的压缩置换以产生48位子密钥Ki。图2.3压缩置换通过以上方法就可以计算出16个子密钥Ki(i值从1到16)。2.3DES加密算法的加密数据块把要加密的数据块分成64位的数据块,不满64位的以适当的方式填补至64位。在第一轮运算之前,先对数据块作初始置换IP(初始置换是简单的比特移位),即设有一个比特的信息块m=m1m2…m64,则IP(m)=m58m50…m7。初始置换如图图2.4初始置换再将置换后的数据块等分成两部分,前面32位记为L[0],后面32位记为R[0]。然后运算函数f根据如图2.5所示的扩展置换(也叫E盒置换),把32位的输入扩展成48位,并与密钥Ki作异或运算,再把所得的48位分成8组,每组6位,使用一个数组来储存,设1~6位为B[1],7~12位为B[2],…43~48位为B[8]。图2.5扩展置换每组分别通过S1,S2,…,S8盒输出,每个S盒是一个4行,16列的表。盒中的每一项都是一个4位数。取出B[j]的第1和第6位串联成一个2位数,记为m,是S盒里用来替换B[j]的数所在的列数;取出B[j]的第2至第5位串联成一个4位数,记为n,是S盒里用来替换B[j]的数所在的行数。用S盒里的值S[j][m][n]替换B[j]。
S盒的6个输入确定了其对应的输出在哪一行哪一列。8个S盒如图2.6所8个数据块都进行S盒置换后,接着把B[1]至B[8]顺序串联起来得到一个32位数,对这个数作如图2.7所示的P盒置换。P盒是用来对S盒运算后的32位输出进行置换,把每个输入位映射到输出位,最后产生32位输出。图2.6S盒每个输入位映射到输出位,最后产生32位输出。即若输入32位为Hi=r1r2…r32,则P(Hi)=h16h7…h20。将P盒置换后的结果与L[i-1]作异或运算,并把计算结果赋给R[i],把R[i-1]的值赋给L[i]。循环执行,接着开始新一轮的运算,知道K16也被用到。然后把R[16]和L[16]顺序串联起来得到一个64位数。最后对这个数执行逆初始置换IP-1。逆初始置换是初始置换的逆过程,如图2.8所示。DES算法的加密过程描述至此完成,其流程如图2.9所示。图2.7P盒置换图2.8逆初始置换设初始置换为IP,运算函数为f,16个子密钥为Ki,则DES加密过程表示如下:
L0R0=IP(明文)
Li=Ri-1,Ri=Li-1⊕f(Ri-1,Ki),其中,i=1,2,…,16
密文=IP-1(R16L16)2.4解密程序设计DES解密和加密使用相同的算法,唯一的不同是密钥的次序相反,即只需要把16个密钥的顺序倒过来。若各轮加密的密钥分别是K1,K2,K3,…,K16,则解密的密钥为K16,K15,K14,…,K1。为各轮产生的密钥的算法也是循环的。密钥向右移动,每次移动的个数为:0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。
DES解密过程可用符号表示如下:
R16L16=IP(密文)
Ri-1=Li,Li-1=Ri⊕f(Ri-1,Ki图2.9DES加密算法流程图3DES加密模块的设计3.1DES加密模块总体构架本设计在对DES算法进行建模时,将整个算法分为密钥产生模块key_gen、S部件代换模块(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一轮变换模块desround和顶层模块des,其总体构架如图3.1所示。其中密钥产生模块被desround模块调用。DES加密模块顶层模块的外部接口示意如图3.2所示,部分端口功能说明如表3.1所示。图3.1DES加密模块总体框架图3.2DES加密模块顶层的外部接口表3.1DES加密模块部分端口功能说明类型端口描述inputload_idataloadinputdecrypt_iencryptcontrolinput[63:0]data_idatainputinput[63:0]key_iextermalsecretkeyinput[63:0]data_odataoutputoutputready_oreadyoutput3.2密钥产生模块key_gen设计DES算法中16轮非线性变换所用到的16个内部子密钥,都是由内部变换子密钥产生器产生的。解密和加密时所有的外部密钥K完全相同,只是在解密时内部16步非线性变换所用的内部子密钥应按K16,K15,…K1的次序使用。密钥产生模块key_gen如图3.3所示。图3.3密钥产生模块key_gen部分代码如下:always@(previous_keyoriterationordecrypt)beginprev_key_var=previous_key;new_key_var=0;new_key=(0);non_perm_key_var=0;non_perm_key=(0); if(!decrypt)begincase(iteration)0,1,8,15:begin…………end default:begin…………endendcase endelsebegincase(iteration)0:begin…………end 1,8,15:beginsemi_key=prev_key_var[55:28];prev0=semi_key[0];semi_key=semi_key>>1;semi_key[27]=prev0;non_perm_key_var[55:28]=semi_key;…………enddefault:begin…………endendcaseendnon_perm_key=(non_perm_key_var);new_key_var[47]=non_perm_key_var[42];………new_key_var[0]=non_perm_key_var[24];new_key=(new_key_var);endendmodule3.3S部件代换模块设计S代换部件是一个十分复杂的非线性函数,正是经过它的非线性变换才使明文实现了较好的混乱,达到加密的效果,从而具有较强的安全性。S代换部件在整个DES算法中所占的比重较大,一共有8个模块,是设计中需要关注的部分。S盒的设计准则如下:没有一个S代换部件的输出位是接近输入位的线性函数。如果将输入位的最左或最右端的位固定,变化中间的4位,每个可能的4位输出只能得到一次。如果S部件两个输入仅有1位的差异,则其输出必须至少有2位不同。如果S代换部件的两个输入仅有中间2位不同,则其输出必须至少有2位不同。如果S代换部件的两个输入前2位不同,后2位已知,则输出必不同。对于输入之间的任何非零的G位差分,32对中至多有8对显示出的差分导致了相同的输出差分。对于S代换部件的实现,主要有两种方法:查表法、逻辑电路法。本文通过查表法实现S代换部件。S1部件代换模块如图3.4所示。图3.4S1部件代换模块其S1部分代码如下:always@(stage1_input)begincase(stage1_input) 0:stage1_output=(14);1:stage1_output=(0);2:stage1_output=(4);…………62:stage1_output=(0);63:stage1_output=(13);endcaseendEndmodule3.4desround模块设计desround模块执行DES算法中的一轮非线性变换。一轮非线性变换的作用过程可以用图3.5解释。第i步非线性变换的输入信号是32bit的右寄存器R(i),首先把它加到扩展器E上,扩展器把32bit的输入扩展为48bit的输出,然后与第i步的48bit内部变换子密钥K(i)按位模相加。接着输出的48bit,被划分为8组,每组6bit,分别加到8个代换部件S1,S2,…,S8上,经查表代换后输出4bit。8个部件共输出32bit,这32bit又经过换位重排,再与变换信号的左半部分L(i-1)按位模相加,就成为下一步变换信号的右半部分R(i)。相应的左半部分则为L(i)=R(i-1)。其中扩展器的工作原理如下。假设32bit的输入为:R=r1,r2,r3,…,r3232bit的输入被分为8组,每组4bit,再把每组4bit前后各加一个bit,从而扩展为6bit。每组前面的一个bit是复制上一组扩展前的最后一个bit,后面加的一个bit是复制下一组扩展前的最开始的一个bit。而第一组加的一个bit是扩展前的第32bit,第八组后面加上的一个bit则是扩展前第一组的头一个bit。L(i-1)L(i-1)R(i-1)扩展器EA=E{R(i-1)K(i)}S1S8B换位重排P(B)K(i)48bitR(i)=P(B)L(i-1)L(i)=R(i-1)图3.5非线性函数g的运算过程本模块调用了密钥生成模块,他的输出除了左半信号和右半信号,还有密钥信号。在这一轮运算中,密钥产生器产生了一个没有经PC—2重排的56bit的数据(它是由preious_key移位而得),这个信号会输出给Key_o,作为下轮运算的一个输入,用以产生下一轮运算所需要的密钥。Desround模块如图3.6所示。图3.6非线性变换desround模块desround模块部分代码如下:always@(posedgeclkornegedgereset)begin if(!reset)beginL_o=(0);R_o=(0);Key_o=(0);endelsebeginL_o=(R_i);R_o=(next_R);Key_o=(non_perm_key); endendalways@(R_iorL_iorKey_ioriteration_iordecrypt_iornew_keyors1_iors2_iors3_iors4_iors5_iors6_iors7_iors8_i)beginR_i_var=R_i; expandedR[47]=R_i_var[0];expandedR[46]=R_i_var[31];…………expandedR[1]=R_i_var[0];expandedR[0]=R_i_var[31];previous_key=(Key_i);iteration=(iteration_i);decrypt=(decrypt_i);round_key=new_key;KER=expandedR^round_key;s1_o=(KER[47:42]);s2_o=(KER[41:36]);s3_o=(KER[35:30]);s4_o=(KER[29:24]);s5_o=(KER[23:18]);s6_o=(KER[17:12]);s7_o=(KER[11:6]);s8_o=(KER[5:0]);Soutput[31:28]=s1_i;Soutput[27:24]=s2_i;Soutput[23:20]=s3_i;Soutput[19:16]=s4_i;Soutput[15:12]=s5_i;Soutput[11:8]=s6_i;Soutput[7:4]=s7_i;Soutput[3:0]=s8_i;f[31]=Soutput[16];f[30]=Soutput[25];…………f[1]=Soutput[28];f[0]=Soutput[7];next_R=(L_i^f);expanRSig=(L_i^f);endEndmodule3.5DES顶层模块des设计在DES模型的顶层模块中,实例化了desround模块和8个S代换部件,综合之后各模块之间的连接关系图如图3.1所示。输入密钥key_i、待加密数据data_i在左半信号及右半信号各经过一个两路数据选择器后连接到desround模块的数据输入端(Li[31:0],R_i[31:0])和密钥输入端(Key_i[55:0])。这里之所以需要数据选择器,是因为模块仅在load_i为高电平时接收外部数据,待加/解密数据和外部密钥通过数据选择器输入到desround模块的数据输入端和密钥输入端。Load_i信号持续一个时钟周期以后的输出密钥和数据,将被送到desround模块的密钥输入端和数据输入端执行下一轮变换。16轮变换结束之后,ready_o会变为高电平,这时整个模块的输出data_o才为有效数据。ready_o信号持续一个时钟周期以后又变为低电平,load_i再次上跳为高电平,模块对下一个明文分组进行加密。des顶层模块部分代码如下:desroundrd1(.clk(clk),.reset(reset),.iteration_i(stage1_iteration_i),.decrypt_i(decrypt_i),.R_i(sta…………_stag1_o),.s5_i(s5_stag1_o),.s6_i(s6_stag1_o),.s7_i(s7_stag1_o),.s8_i(s8_stag1_o))s1sbox1(.stage1_input(s1_stag1_i),.stage1_output(s1_stag1_o));…………s8sbox8(.stage1_input(s8_stag1_i),.stage1_output(s8_stag1_o));always@(posedgeclkornegedgereset)beginif(!reset)beginready_o=(0);data_o=(0);stage1_iter=(0);data_ready=(1);endelsebeginready_o=(next_ready_o);data_o=(next_data_o);stage1_iter=(next_stage1_iter);data_ready=(next_data_ready);endendalways@(data_iorkey_iorload_iorstage1_iterordata_readyorstage1_R_oorstage1_L_oorstage1_round_key_o)beginL_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[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[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[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[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:beginif(load_i)beginnext_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);endelseif(!data_ready)beginnext_stage1_iter=(0); next_ready_o=(1);next_data_ready=(1); end end15:next_stage1_iter=(0);default: next_stage1_iter=(stage1_iter+1); endcaseendendmodule4DES加密模块仿真及综合4.1DES加密及解密仿真4.1.1DES加密模块仿真步骤(1)建立工程:在ModelSim中建立Project。如图4.1所示,点击FileNewProject,得到CreataProject的弹出窗口,如图4.2所示。在ProjectName输入项目名字,最好和顶层文件名字一致。ProjectLocation是工作目录,可通过Brose按钮来选择或改变。DdfaultLibraryName可以采用工具默认的work。图4.1建立工程图4.2工程路径及名称(2)给工程加入文件:ModelSim会自动弹出AddItemstotheproject窗口,如图4.3所示。选择AddExsitingFile后,根据相应提示将文件加到该Project中。图4.3建立文件(3)编译:编译(包括源代码和库文件的编译)。编译可点击ComlileComlileAll来完成。(4)装载文件:如图4.4,点击SimulateSimulate…后,如图4.5所示,选定顶层文件(激励文件),ADD加入,然后点击LOAD,装载。图4.4仿真指令(4)开始仿真:同过菜单:View->Structure,View->Signals,View->Wave打开Structure,Signals,Wave三个窗口。在Structure窗口内选定所要观察的信号所在的模块,然后在Signals窗口选定信号,同过鼠标左键拖放到Wave窗口,如图4.6。然后在Wave窗口,点击runall,运行,在波形窗口就可以看到信号的仿真波形。如图3.7.(5)开始仿真:同过菜单:View->Structure,View->Signals,View->Wave打开Structure,Signals,Wave三个窗口。在Structure窗口内选定你所要观察的信号所在的模块,然后在Signals窗口选定信号,同过鼠标左键拖放到Wave窗口,如图4.6。然后在Wave窗口,点击runall,运行,在波形窗口就可以看到信号的仿真波形。如图4.7、4.8所示。图4.5选择测试文件图4.6加入信号DES加密及解密仿真结果Modelsim仿真结果如下:图4.7decrypt=1时,DESTestbench仿真波形图4.8decrypt=0时,DESTestbench仿真波形当decrypt=0时为加密,decrypt=1时为解密。仿真结果显示,加密和解密的结果都与事先计算的结果吻合,而且解密后能完全将密文还原成明文。能很好的完成加密和解密功能。4.2DES加密模块综合4.2.1综合工具synplify介绍Synplify和SynplifyPro是Synplicity公司提供的专门针对FPGA和CPLD实现的逻辑综合工具,它支持VHDL93(IEEE1076),包括std_logic_1164,Numeric_std,std_logic_Usigned,std_logic_Signed,std_logic_Arith;和Verilog95(IEEE1364)的可综合子集。该软件提供的SymbolicFSMCompiler是专门支持有效状态机优化的内嵌工具;SCOPE是管理(包括输入和查看)设计约束与属性,提供活页式分类,非常友好的表格界面;用于文本输入的HDL语法敏感编辑窗口不仅提供了对综合错误的高亮显示,结合图形化的分析和cross_probe工具HDLAnalyst,可以把源代码与综合的结果有机地链接起来,帮助设计者迅速定位关键路径,解决问题;其提供的命令行界面,可以通过使用Tcl脚本极大的提高工作效率。4.2.2综合结果综合结果如图4.9所示:图4.9DES加密模块综合结论本设计是利用VerilogHDL语言来完成DES加密模块的设计,本文介绍了DES加密算法的现状和未来,对DES算法进行了详细的描述,利用Modelsim软件仿真,synplify软件综合。本设计在对DES算法进行建模时,将整个算法分为密钥产生模块key_gen、S部件代换模块(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一轮变换模块desround和顶层模块des。进行仿真后仿真结果显示,加密和解密的结果都与事先计算的结果吻合,而且解密后能完全将密文还原成明文。能很好的完成加密和解密功能。致谢本论文是在***老师亲自指导下完成的。伍老师在学业上给了我很大的帮助,使我在实验过程中避免了许多无谓的工作。伍老师一丝不苟、严谨认真的治学态度,精益求精、诲人不倦的学者风范,以及正直无私、磊落大度的高尚品格,更让我明白许多做人的道理,在此我对伍师表示衷心的感谢!在整个毕业设计过程中,我的指导老师伍彩云老师一直给予我们很多的关注和指导,勤勉教学,诲人不倦,帮助我们顺利的完成这次设计任务。在我们遇到困难时,她总能给我们很好的启发,引导我们走向成功。伍老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀。再次感谢我的导师伍彩云老师。感谢沈阳理工大学图书馆,图书馆收藏丰富的专业知识书籍让我的毕业设计有充足的参考资料。还要感谢我所参考书籍的作者们,感谢工作在中国电子行业的前辈们,是他们将知识传授给我们,让我国的电子事业后继有人、蓬勃发展!还要感谢大学四年来所有的老师,为我们打下专业知识的基础;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励。此次毕业设计才会顺利完成。最后感谢****大学四年来对我的栽培。参考文献[1]乔庐峰.VerilogHDL数字系统设计与验证.第一版.电子工业出版社,2009[2]杜慧敏,赵全良.基于VerilogHDL的FPGA设计基础.第一版.西安电子科技大学出版社,2002[3]张亮.数字电路设计与VerilogHDL.第一版.人民邮电出版社,2000[4]J.Bhasker.VerilogHDL硬件描述语言.第一版.机械工业出版社,2000[5]夏宇闻.VerilogHDL数字系统设计教程.第一版.北京航空航天大学出版社,2003[6]侯伯亨,顾新.VHDL硬件描述语言数字逻辑电路设计.第一版.西安电子科技大学出版社,1999[7]常晓明,李媛媛.VerilogHDL工程实践入门.第一版.北京航空航天大学出版社,2005[8]张延伟,杨金岩,葛爱学.VerilogHDL程序设计实例详解,2008[9]刘秋云,王佳.VerilogHDL设计实践与指导.机械工业出版社.2005[10]王冠,黄熙,王鹰.VerilogHDL与数字电路设计.第一版.机械工业出版社,2006附录A英文原文BuildingProgrammableAutomationControllerswithLabVIEWFPGAOverviewProgrammableAutomationControllers(PACs)aregainingacceptancewithintheindustrialcontrolmarketastheidealsolutionforapplicationsthatrequirehighlyintegratedanaloganddigitalI/O,floating-pointprocessing,andseamlessconnectivitytomultipleprocessingnodes.NationalInstrumentsoffersavarietyofPACsolutionspoweredbyonecommonsoftwaredevelopmentenvironment,NILabVIEW.WithLabVIEW,youcanbuildcustomI/Ointerfacesforindustrialapplicationsusingadd-onsoftware,suchastheNILabVIEWFPGAModule.WiththeLabVIEWFPGAModuleandreconfigurableI/O(RIO)hardware,NationalInstrumentsdeliversanintuitive,accessiblesolutionforincorporatingtheflexibilityandcustomizabilityofFPGAtechnologyintoindustrialPACsystems.YoucandefinethelogicembeddedinFPGAchipsacrossthefamilyofRIOhardwaretargetswithoutknowinglow-levelhardwaredescriptionlanguages(HDLs)orboard-levelhardwaredesigndetails,aswellasquicklydefinehardwareforultrahigh-speedcontrol,customizedtimingandsynchronization,low-levelsignalprocessing,andcustomI/Owithanalog,digital,andcounterswithinasingledevice.YoualsocanintegrateyourcustomNIRIOhardwarewithimageacquisitionandanalysis,motioncontrol,andindustrialprotocols,suchasCANandRS232,torapidlyprototypeandimplementacompletePACsystem.TableofContents\l"toc0"Introduction\l"toc1"NIRIOHardwareforPACs\l"toc2"BuildingPACswithLabVIEWandtheLabVIEWFPGAModule\l"toc3"FPGADevelopmentFlow\l"toc4"UsingNISoftMotiontoCreateCustomMotionControllers\l"toc5"Applications\l"toc6"ConclusionIntroductionYoucanusegraphicalprogramminginLabVIEWandtheLabVIEWFPGAModuletoconfiguretheFPGA(field-programmablegatearray)onNIRIOdevices.RIOtechnology,themergingofLabVIEWgraphicalprogrammingwithFPGAsonNIRIOhardware,providesaflexibleplatformforcreatingsophisticatedmeasurementandcontrolsystemsthatyoucouldpreviouslycreateonlywithcustom-designedhardware.AnFPGAisachipthatconsistsofmanyunconfiguredlogicgates.Unlikethefixed,vendor-definedfunctionalityofanASIC(application-specificintegratedcircuit)chip,youcanconfigureandreconfigurethelogiconFPGAsforyourspecificapplication.FPGAsareusedinapplicationswhereeitherthecostofdevelopingandfabricatinganASICisprohibitive,orthehardwaremustbereconfiguredafterbeingplacedintoservice.Theflexible,software-programmablearchitectureofFPGAsofferbenefitssuchashigh-performanceexecutionofcustomalgorithms,precisetimingandsynchronization,rapiddecisionmaking,andsimultaneousexecutionofparalleltasks.Today,FPGAsappearinsuchdevicesasinstruments,consumerelectronics,automobiles,aircraft,copymachines,andapplication-specificcomputerhardware.WhileFPGAsareoftenusedinindustrialcontrolproducts,FPGAfunctionalityhasnotpreviouslybeenmadeaccessibletoindustrialcontrolengineers.DefiningFPGAshashistoricallyrequiredexpertiseusingHDLprogrammingorcomplexdesigntoolsusedmorebyhardwaredesignengineersthanbycontrolengineers.WiththeLabVIEWFPGAModuleandNIRIOhardware,younowcanuseLabVIEW,ahigh-levelgraphicaldevelopmentenvironmentdesignedspecificallyformeasurementandcontrolapplications,tocreatePACsthathavethecustomization,flexibility,andhigh-performanceofFPGAs.BecausetheLabVIEWFPGAModuleconfigurescustomcircuitryinhardware,yoursystemcanprocessandgeneratesynchronizedanaloganddigitalsignalsrapidlyanddeterministically.FigureA1illustratesmanyoftheNIRIOdevicesthatyoucanconfigureusingtheLabVIEWFPGAModule.FigureA1LabVIEWFPGAVIBlockDiagramandRIOHardwarePlatformsNIRIOHardwareforPACsHistorically,programmingFPGAshasbeenlimitedtoengineerswhohavein-depthknowledgeofVHDLorotherlow-leveldesigntools,whichrequireovercomingaverysteeplearningcurve.WiththeLabVIEWFPGAModule,NIhasopenedFPGAtechnologytoabroadersetofengineerswhocannowdefineFPGAlogicusingLabVIEWgraphicaldevelopment.Measurementandcontrolengineerscanfocusprimarilyontheirtestandcontrolapplication,wheretheirexpertiselies,ratherthanthelow-levelsemanticsoftransferringlogicintothecellsofthechip.TheLabVIEWFPGAModulemodelworksbecauseofthetightintegrationbetweentheLabVIEWFPGAModuleandthecommercialoff-the-shelf(COTS)hardwarearchitectureoftheFPGAandsurroundingI/Ocomponents.NationalInstrumentsPACsprovidemodular,off-the-shelfplatformsforyourindustrialcontrolapplications.WiththeimplementationofRIOtechnologyonPCI,PXI,andCompactVisionSystemplatformsandtheintroductionofRIO-basedCompactRIO,engineersnowhavethebenefitsofaCOTSplatformwiththehigh-performance,flexibility,andcustomizationbenefitsofFPGAsattheirdisposaltobuildPACs.NationalInstrumentsPCIandPXIRSeriesplug-indevicesprovideanaloganddigitaldataacquisitionandcontrolforhigh-performance,user-configurabletimingandsynchronization,aswellasonboarddecisionmakingonasingledevice.Usingtheseoff-the-shelfdevices,youcanextendyourNIPXIorPCIindustrialcontrolsystemtoincludehigh-speeddiscreteandanalogcontrol,customsensorinterfaces,andprecisetimingandcontrol.NICompactRIO,aplatformcenteredonRIOtechnology,providesasmall,industriallyrugged,modularPACplatformthatgivesyouhigh-performanceI/Oandunprecedentedflexibilityinsystemtiming.YoucanuseNICompactRIOtobuildanembeddedsystemforapplicationssuchasin-vehicledataacquisition,mobileNVHtesting,andembeddedmachinecontrolsystems.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毛巾产品的生命周期评估考核试卷
- 社会心理学在人机交互设计中的应用考核试卷
- 涂料配方设计考核试卷
- 电子元器件识别与应用考核试卷
- 社交心理学与消费者心理分析考核试卷
- 纺织机械的边缘计算服务发展趋势预测考核试卷
- 服装批发过程中的质量控制考核试卷
- 禽类屠宰行业绿色可持续发展考核试卷
- 海底设施施工质量控制与验收考核试卷
- 竹木材料在环境工程中的应用考核试卷
- 2025年江苏省徐州市铜山区中考一模道德与法治试题(原卷版+解析版)
- 制造业自检自控流程优化计划
- 《人工智能的进展》课件
- 风湿免疫病患者结核病诊治及预防实践指南(2025版)解读课件
- 大建安-大连市建筑工程安全档案编制指南
- 上海2024-2025学年五年级数学第二学期期末联考模拟试题含答案
- GB/T 45421-2025城市公共设施非物流用智能储物柜服务规范
- 2025年湖南韶旅集团招聘笔试参考题库含答案解析
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 读书分享读书交流会《你当像鸟飞往你的山》课件
- 新疆维吾尔自治区保障性住房建设标准(正文)
评论
0/150
提交评论