tag 标签: des

相关博文
  • 热度 9
    2013-3-7 17:32
    1984 次阅读|
    5 个评论
    再来看看逻辑综合工程师的工作,以下是工作描述以及入职要求。   Job Requirements and Qualification You must have a BSEE or MSEE with at least 5+ years of applicable experience. Demonstrate successful results for multiple ASIC programs, is required. Strong written / verbal communication skills are a must, as you will be working, influencing and collaborating with teams in distributed locations. You will need to be very organized with solid understanding of Synopsys and  Cadence design tools and flows. Minimum Requirements: SOC level Synthesis / STA. Experienced with Verilog/VHDL digital design Hands on experience with constraints development Hands on experience with Synopsys design compiler and ICC SoC implementation experience such as full chip level synthesis Pre-PR timing closure Hands on experience with Spyglass rule checking, netlist equivalence checking, and gate-level simulations Experience with various synthesis options to optimize the power of the Design. Work with Place and Route peers for timing closure Good Knowledge of Static Timing Analysis and Place and Route. Familiarity with various interface technologies including MIPI, USB, I2C, GPIO, DDR etc Familiarity with ASIC design flows for deep sub micron technologies Familiarity with FPGA design flow is plus Preferred Requirements: Familiarity with image processing is a strong plus Responsibilities In this role, the candidate will work with designers and understand the complexity of the blocks and interfaces. A candidate will work with the ASIC design team and will participate in the development of netlist generation from synthesis. A candidate will also support  the design team to do simulations . Responsibilities include: reading the RTL code. Generating chip level timing constraints. Validating the RTL inputs.  Analyzing the power for the design and optimizing for speed/area/power.  Understand and drive the pre-synthesis chip-level timing to ensure that synthesis and layout level timing and other specifications can be achieved. Support chip level verification and physical design timing closure.   这个工作只有一个目的,就是把HDL代码变成网表,这个对于做FPGA来说大多时候就是按一下就自动生成了,对芯片这事做起来并不像说的这么轻松,首先要清晰了解整个芯片的时钟复位电源系统,写出约束文件,把HDL代码用工具转换为netlist,并且分析时序报告,比较网表与代码的逻辑一致性,有些dft插入工作也要在这里完成。这个工作除了要求熟悉电路本身的结构外,主要要求对综合工具有深入了解,并对选用的工艺熟悉。不同的综合策略,得出的网表结果跟所费时间是有差异的,许多年来DC一直是首选工具,每出一个新版本,综合工程师都要看看有什么新搞法。这个职位虽然需要写的代码没有逻辑设计验证那么多,但是一般的设计都要来回综合很多次,大芯片每次所费时间又长,等待的也是很让人痛苦。这个工作需要打交道最多的人是逻辑设计人员跟物理设计人员。   这个职位相对来说属于整个数字流程中要求比较高的岗位,除了对工具的熟悉,一般也要求熟练使用脚本语言。这个岗位基本不会招收刚毕业的学生,大部分是公司内部做逻辑设计的人自学一下然后转岗专门搞这个,一般国内公司里边专业做综合的人数量很少,所以这些人跳槽的话公司都会加钱留住,当然这些人的责任也是重大的,如果芯片挂了,这些人是没法再老板那里交差的。这个岗位基本招聘的都是有些资历的工程师,一般工资都在15k以上。   当然这个职位想转行就比较难点,一般都是混时间久了变成公司的台柱子之一,或者去卖DC,不过貌似国内做DC使用培训销售的就那么几个人吧,不同城市的设计服务中心讲课的都是那个面孔。   数字电路工程师的命运 逻辑综合工程师的命运 数字版图工程师的命运  
  • 热度 4
    2012-11-9 10:23
    499 次阅读|
    0 个评论
    其实比起叙述编写DES加密程序过程,我更家愿意去写成功的程序中输出的加密的具体的实例数据,因为这个过程实在是。。。。。有些程序是这样,你知道怎么去编写,你也能清晰的知道你将需要多少的时间去完成这个程序,而事实上,你也做到了,而有些程序,你知道它并不难写,但是就是本来1个小时可以写好的事情,你却使用了超过4个小时的时间去编写。还有些程序,写好了,写的过程基本没有出过啥差错,但是最后运行的时候常常出来一些莫名其妙的错误,而有些程序呢,可以编写,而且编写程序的过程中经常出现错误,想要出现的答案,或者说程序运行的记过就在嘴边了,就在手指上了,屏幕上出现的结果就是不对,于是反复的调试,反复的调试。。。。但是一旦调成,它以后的运行就错不了。   而DES这种编程,在我的经历中,就是两个后者。   DES加密对我们并不是啥高深的词,不过如果你想深入细细的研究它,恩,你还是需要一定的时间和一定的脑细胞的牺牲的。不过加密就是这样,其实就是数学的变换,各种变换,那些公开和广泛使用的加密算法,肯定不会那么简单,因为他们需要抵挡的密码的攻击是各种各样的,也是出自各种目的的,使用的工具也是各不相同的。   我并不打算把这样一个纠结的过程一步一步详细的叙述出来,如果是你,相信你也不会,但是其中噢乖出现的一些需要耗费很多的时间去寻找出来的错误,是需要去分析的,这也是为了让以后的编程的效率更高,也是为了更少的“低级”的错误的频繁的发生。   首先还是简略的介绍一下Des的加密的流程,背后的原理我没有研究,如果有兴趣,可以探讨一下,首先说明一点,Des是面向2进制的算法,恩,这个好像并没有啥问题,不过这个确实是有一定的限制的,在具体的应用的程序的编写过程中,常常会受到这个的牵制,二进制,化为我们能够懂得的内容,复原远比拆开更加的困难。   这里叙述其中的一个最小最基础的操作,也就是对64个二进制码加密,实际的应用中,不难想象,文本流可以进行截断,然后64位64位的进行加密,最后拼接成一个完整的文本,好了,进入正题。   密钥的位数也是64为,64个二进制码,而用户输入的就是一个8位的字符串,然后每一位就可以拆分成8位的二进制的码,然后我们就开始了具体的加密。   在初开始,明文,也就是需要被加密的内容(这里的内容就是指二进制的码,以后同此,不再说明),还有用于加密的密钥,就已经变得面目全非了,这个是由于在开始的时候分别对他们两者进行了不同的方式的转换,重新的排列,其中密钥的处理最复杂,分别叙述。   加密中使用的密钥,需要16个,当然,不是需要用户输入16个,而是根据前面的输入的密钥产生16个,这样不是有很多重复吗?不是的,因为产生的过程并不是简单的组合,子密钥的产生过程包括了置换,循环位移,图片如下: 置换,他的意思就是对密钥进行重新排列,这样的目的除了让其面目全非,更多是安全上的考虑,你可能要问,这种置换的格式或方法参数是固定的吗?是的。   具体的参数这里不给出,网上和教科书中也有很多的涉及,所以首先,我们就需要写一个生产16个密钥的函数了。   然后就是明文的“再次“产生,这里对于明文没有那么繁琐的步骤,只是一个置换,将数据打乱重新组合,变为左32位和右32位。   这样的两个产生函数之后,就是正式的加密,而这里也是编程的过程中需要注意最多的地方,因为在这里犯下“低级”错误的概率是最大的。   分两张给出过程:   总共是16轮的加密过程,这些过程大同小异,所以只需要看懂一个就可以了,在编程中,就是用循环的结构,来完成这样的过程。   就第一轮而言,左右各32位的内容,然后经过各自的运算,把结果值传递给下一组左右32位的内容,这样,进行16轮,最终得到需要的结果。   不过图中有一个错误,这个错误也是后来发现的,并且也是十分致命的,那就是在即将要出结果的最后一轮中,规则有一点的改变,那就是L16不是等于R15,而是反过来,R16等于R15,然后L16等于另一个值,好了,在之前的循环中,主要是对于R的赋值的运算有一些复杂,其中包含一个模2加(就是各位异或),还有一个关键的加密函数,这个函数中使用到之前产生的密钥,并且要用到S盒,S盒是个神奇的东西,有了它,DES中产生了非线性的因素,这样才能对安全达到一定的保证,否则就不好说了。   S盒的具体内容可以在别的地方看到,原理和流程就不详细说了,在编程的时候,这里一般不会出问题,问题要出也是主要在对于位的操作上,不过有很多的例程可以参考,所以不再叙述。    
  • 热度 5
    2012-11-4 08:15
    361 次阅读|
    0 个评论
              测试用例3:   这个是输入的需要加密的原始数据: 1011110001000101001110010010011001000110101001101001001000110100 这个是输入的密钥:(这里和测试例子2相比没有改变内容,改变了密钥) 1001010100111001011100110110010000110101010101100110011100100101   明文变换:   这个是对数据做第一次置换IP后的结果: 0001001011000101101110110000011001100001101011010000010101111000   密钥变换:   这里输出的是产生的16个字密钥 010000000011011010111110000101110010001001001110 001000001110011011100100010100000000011101010111 110100000101110100110010010111111010000010001100 111001001010001101110001011000000111010111001001 100001111101011000000111001010101011000000101111 011010110001001111010010111001100101110110100010 001111001101000011101001000011000000101101111011 100100110100000101011010110101111101100001010000 000101100110101011011011110010011000101001001110 001111110111010100000000110101001101011010011000 010010100000110111001101000110010001011001101101 010110011110000000011101100110101111100010100000 000001011000110110101010001000000110111100110101 111100100010100010100111101110110010100010010010 101110011010111000000000111001010100001100010011 111000010011100001001110101101111000101110000000   加密部分:   这个是加密流程中开始时的左右两个的结果: 这个是左边的结果: 00010010110001011011101100000110 这个是右边的结果: 01100001101011010000010101111000   1. 这个是选择运算的结果: 001100000011110101011010100000001010101111110000 这个是异或运算的结果: 011100000000101111100100100101111000100110111110 这里是S盒变换的结果: 000011110111100111000001110110000001001011000101 这是对S盒变换内容做P置换以后的内容: 11001111000111010110000001010101 这个是加密函数中第1轮的左右两个的结果: 这个是左边的结果: 01100001101011010000010101111000 这个是右边的结果: 11011101110110001101101101010011   2. 这个是选择运算的结果: 111011111011111011110001011011110110101010100111 这个是异或运算的结果: 110011110101100000010101001111110110110111110000 这里是S盒变换的结果: 101101111101001000011010111100000001001011000101 这是对S盒变换内容做P置换以后的内容: 01110110111100010100011100010011 这个是加密函数中第2轮的左右两个的结果: 这个是左边的结果: 11011101110110001101101101010011 这个是右边的结果: 00010111010111000100001001101011   3. 这个是选择运算的结果: 100010101110101011111000001000000100001101010110 这个是异或运算的结果: 010110101011011111001010011111111110001111011010 这里是S盒变换的结果: 110011110001011001100110101000000001001011000101 这是对S盒变换内容做P置换以后的内容: 01000100111011001101010010011001 这个是加密函数中第3轮的左右两个的结果: 这个是左边的结果: 00010111010111000100001001101011 这个是右边的结果: 10011001001101000000111111001010   4. 这个是选择运算的结果: 010011110010100110101000000001011111111001010101 这个是异或运算的结果: 101010111000101011011001011001011000101110011100 这里是S盒变换的结果: 011010011001000100111110111011000001001011000101 这是对S盒变换内容做P置换以后的内容: 10111100001110001100011110101001 这个是加密函数中第4轮的左右两个的结果: 这个是左边的结果: 10011001001101000000111111001010 这个是右边的结果: 10101011011001001000010111000010   5. 这个是选择运算的结果: 010101010110101100001001010000001011111000000101 这个是异或运算的结果: 110100101011110100001110011010100000111000101010 这里是S盒变换的结果: 100111110010101000001001000011000001001011000101 这是对S盒变换内容做P置换以后的内容: 01011000110010000110000001110110 这个是加密函数中第5轮的左右两个的结果: 这个是左边的结果: 10101011011001001000010111000010 这个是右边的结果: 11000001111111000110111110111100   6. 这个是选择运算的结果: 011000000011111111111000001101011111110111111001 这个是异或运算的结果: 000010110010110000101010110100111010000001011011 这里是S盒变换的结果: 010010001011101111001101110111100001001011000101 这是对S盒变换内容做P置换以后的内容: 10011111010111101010000101101101 这个是加密函数中第6轮的左右两个的结果: 这个是左边的结果: 11000001111111000110111110111100 这个是右边的结果: 00110100001110100010010010101111   7. 这个是选择运算的结果: 100110101000000111110100000100001001010101011110 这个是异或运算的结果: 101001100101000100011101000111001001111000100101 这里是S盒变换的结果: 010010101001111011000111000011100001001011000101 这是对S盒变换内容做P置换以后的内容: 01001101011011101011000101101000 这个是加密函数中第7轮的左右两个的结果: 这个是左边的结果: 00110100001110100010010010101111 这个是右边的结果: 10001100100100101101111011010100   8. 这个是选择运算的结果: 010001011001010010100101011011111101011010101001 这个是异或运算的结果: 110101101101010111111111101110000000111011111001 这里是S盒变换的结果: 001101001110111010001100001000110001001011000101 这是对S盒变换内容做P置换以后的内容: 00010001010000110001111101011110 这个是加密函数中第8轮的左右两个的结果: 这个是左边的结果: 10001100100100101101111011010100 这个是右边的结果: 00100101011110010011101111110001   9. 这个是选择运算的结果: 100100001010101111110010100111110111111110100010 这个是异或运算的结果: 100001101100000100101001010101101111010111101100 这里是S盒变换的结果: 111111011001101011111010110011100001001011000101 这是对S盒变换内容做P置换以后的内容: 00111101111111101100001111110011 这个是加密函数中第9轮的左右两个的结果: 这个是左边的结果: 00100101011110010011101111110001 这个是右边的结果: 10110001011011000001110100100111   10. 这个是选择运算的结果: 110110100010101101011000000011111010100100001111 这个是异或运算的结果: 111001010101111001011000110110110111111110010111 这里是S盒变换的结果: 101000011011101101010111001010110001001011000101 这是对S盒变换内容做P置换以后的内容: 10101100111001100110111101001100 这个是加密函数中第10轮的左右两个的结果: 这个是左边的结果: 10110001011011000001110100100111 这个是右边的结果: 10001001100111110101010010111101   11. 这个是选择运算的结果: 110001010011110011111110101010101001010111111011 这个是异或运算的结果: 100011110011000100110011101100111000001110010110 这里是S盒变换的结果: 110001101001010001110001110111100001001011000101 这是对S盒变换内容做P置换以后的内容: 01101110100101101011000110110001 这个是加密函数中第11轮的左右两个的结果: 这个是左边的结果: 10001001100111110101010010111101 这个是右边的结果: 11011111111110101010110010010110   12. 这个是选择运算的结果: 011011111111111111110101010101011001010010101101 这个是异或运算的结果: 001101100001111111101000110011110110110000001101 这里是S盒变换的结果: 110111011100110011111010101001110001001011000101 这是对S盒变换内容做P置换以后的内容: 00110001101011111101110111110011 这个是加密函数中第12轮的左右两个的结果: 这个是左边的结果: 11011111111110101010110010010110 这个是右边的结果: 10111000001100001000100101001110   13. 这个是选择运算的结果: 010111110000000110100001010001010010101001011101 这个是异或运算的结果: 010110101000110000001011011001010100010101101000 这里是S盒变换的结果: 110010101011111100110011010110010001001011000101 这是对S盒变换内容做P置换以后的内容: 11101110111110001011100111000100 这个是加密函数中第13轮的左右两个的结果: 这个是左边的结果: 10111000001100001000100101001110 这个是右边的结果: 00110001000000100001010101010010   14. 这个是选择运算的结果: 000110100010100000000100000010101010101010100100 这个是异或运算的结果: 111010000000000010100011101100011000001000110110 这里是S盒变换的结果: 101011110000111101111110111111010001001011000101 这是对S盒变换内容做P置换以后的内容: 11111010111111000101111011111001 这个是加密函数中第14轮的左右两个的结果: 这个是左边的结果: 00110001000000100001010101010010 这个是右边的结果: 01000010110011001101011110110111   15. 这个是选择运算的结果: 101000000101011001011001011010101111110110101110 这个是异或运算的结果: 000110011111100001011001100011111011111010111101 这里是S盒变换的结果: 000101010001000110000000010101100001001011000101 这是对S盒变换内容做P置换以后的内容: 10000111000100100100000000110010 这个是加密函数中第15轮的左右两个的结果: 这个是左边的结果: 01000010110011001101011110110111 这个是右边的结果: 10110110000100000101010101100000   16. 这个是选择运算的结果: 010110101100000010100000001010101010101100000001 这个是异或运算的结果: 101110111111100011101110100111010010000010000001 这里是S盒变换的结果: 101110011010110101111101101100010001001011000101 这是对S盒变换内容做P置换以后的内容: 10110010100011000111111111001111 这个是加密函数中第16轮的左右两个的结果: 这个是左边的结果: 11110000010000001010100001111000 这个是右边的结果: 10110110000100000101010101100000     这个是最终加密的结果: 0000100010000000100010000000010111101001110001110101101111000100     解密部分:   这个是输入的需要解密的原始数据: 0000100010000000100010000000010111101001110001110101101111000100 这个是输入的密钥: 1001010100111001011100110110010000110101010101100110011100100101   明文变换:   这个是对数据做第一次置换IP后的结果: 1111000001000000101010000111100010110110000100000101010101100000   密钥变换:   这里输出的是产生的16个字密钥 010000000011011010111110000101110010001001001110 001000001110011011100100010100000000011101010111 110100000101110100110010010111111010000010001100 111001001010001101110001011000000111010111001001 100001111101011000000111001010101011000000101111 011010110001001111010010111001100101110110100010 001111001101000011101001000011000000101101111011 100100110100000101011010110101111101100001010000 000101100110101011011011110010011000101001001110 001111110111010100000000110101001101011010011000 010010100000110111001101000110010001011001101101 010110011110000000011101100110101111100010100000 000001011000110110101010001000000110111100110101 111100100010100010100111101110110010100010010010 101110011010111000000000111001010100001100010011 111000010011100001001110101101111000101110000000     这个是解密流程中开始时的左右两个的结果: 这个是左边的结果: 11110000010000001010100001111000 这个是右边的结果: 10110110000100000101010101100000   1. 这个是选择运算的结果: 010110101100000010100000001010101010101100000001 这个是异或运算的结果: 101110111111100011101110100111010010000010000001 这里是S盒变换的结果: 101110011010110101111101101100011111000001000000 这是对S盒变换内容做P置换以后的内容: 10110010100011000111111111001111 这个是解密函数中第1轮的左右两个的结果: 这个是左边的结果: 10110110000100000101010101100000 这个是右边的结果: 01000010110011001101011110110111   2. 这个是选择运算的结果: 101000000101011001011001011010101111110110101110 这个是异或运算的结果: 000110011111100001011001100011111011111010111101 这里是S盒变换的结果: 000101010001000110000000010101101111000001000000 这是对S盒变换内容做P置换以后的内容: 10000111000100100100000000110010 这个是解密函数中第2轮的左右两个的结果: 这个是左边的结果: 01000010110011001101011110110111 这个是右边的结果: 00110001000000100001010101010010   3. 这个是选择运算的结果: 000110100010100000000100000010101010101010100100 这个是异或运算的结果: 111010000000000010100011101100011000001000110110 这里是S盒变换的结果: 101011110000111101111110111111011111000001000000 这是对S盒变换内容做P置换以后的内容: 11111010111111000101111011111001 这个是解密函数中第3轮的左右两个的结果: 这个是左边的结果: 00110001000000100001010101010010 这个是右边的结果: 10111000001100001000100101001110   4. 这个是选择运算的结果: 010111110000000110100001010001010010101001011101 这个是异或运算的结果: 010110101000110000001011011001010100010101101000 这里是S盒变换的结果: 110010101011111100110011010110011111000001000000 这是对S盒变换内容做P置换以后的内容: 11101110111110001011100111000100 这个是解密函数中第4轮的左右两个的结果: 这个是左边的结果: 10111000001100001000100101001110 这个是右边的结果: 11011111111110101010110010010110   5. 这个是选择运算的结果: 011011111111111111110101010101011001010010101101 这个是异或运算的结果: 001101100001111111101000110011110110110000001101 这里是S盒变换的结果: 110111011100110011111010101001111111000001000000 这是对S盒变换内容做P置换以后的内容: 00110001101011111101110111110011 这个是解密函数中第5轮的左右两个的结果: 这个是左边的结果: 11011111111110101010110010010110 这个是右边的结果: 10001001100111110101010010111101   6. 这个是选择运算的结果: 110001010011110011111110101010101001010111111011 这个是异或运算的结果: 100011110011000100110011101100111000001110010110 这里是S盒变换的结果: 110001101001010001110001110111101111000001000000 这是对S盒变换内容做P置换以后的内容: 01101110100101101011000110110001 这个是解密函数中第6轮的左右两个的结果: 这个是左边的结果: 10001001100111110101010010111101 这个是右边的结果: 10110001011011000001110100100111   7. 这个是选择运算的结果: 110110100010101101011000000011111010100100001111 这个是异或运算的结果: 111001010101111001011000110110110111111110010111 这里是S盒变换的结果: 101000011011101101010111001010111111000001000000 这是对S盒变换内容做P置换以后的内容: 10101100111001100110111101001100 这个是解密函数中第7轮的左右两个的结果: 这个是左边的结果: 10110001011011000001110100100111 这个是右边的结果: 00100101011110010011101111110001   8. 这个是选择运算的结果: 100100001010101111110010100111110111111110100010 这个是异或运算的结果: 100001101100000100101001010101101111010111101100 这里是S盒变换的结果: 111111011001101011111010110011101111000001000000 这是对S盒变换内容做P置换以后的内容: 00111101111111101100001111110011 这个是解密函数中第8轮的左右两个的结果: 这个是左边的结果: 00100101011110010011101111110001 这个是右边的结果: 10001100100100101101111011010100   9. 这个是选择运算的结果: 010001011001010010100101011011111101011010101001 这个是异或运算的结果: 110101101101010111111111101110000000111011111001 这里是S盒变换的结果: 001101001110111010001100001000111111000001000000 这是对S盒变换内容做P置换以后的内容: 00010001010000110001111101011110 这个是解密函数中第9轮的左右两个的结果: 这个是左边的结果: 10001100100100101101111011010100 这个是右边的结果: 00110100001110100010010010101111   10. 这个是选择运算的结果: 100110101000000111110100000100001001010101011110 这个是异或运算的结果: 101001100101000100011101000111001001111000100101 这里是S盒变换的结果: 010010101001111011000111000011101111000001000000 这是对S盒变换内容做P置换以后的内容: 01001101011011101011000101101000 这个是解密函数中第10轮的左右两个的结果: 这个是左边的结果: 00110100001110100010010010101111 这个是右边的结果: 11000001111111000110111110111100   11. 这个是选择运算的结果: 011000000011111111111000001101011111110111111001 这个是异或运算的结果: 000010110010110000101010110100111010000001011011 这里是S盒变换的结果: 010010001011101111001101110111101111000001000000 这是对S盒变换内容做P置换以后的内容: 10011111010111101010000101101101 这个是解密函数中第11轮的左右两个的结果: 这个是左边的结果: 11000001111111000110111110111100 这个是右边的结果: 10101011011001001000010111000010   12. 这个是选择运算的结果: 010101010110101100001001010000001011111000000101 这个是异或运算的结果: 110100101011110100001110011010100000111000101010 这里是S盒变换的结果: 100111110010101000001001000011001111000001000000 这是对S盒变换内容做P置换以后的内容: 01011000110010000110000001110110 这个是解密函数中第12轮的左右两个的结果: 这个是左边的结果: 10101011011001001000010111000010 这个是右边的结果: 10011001001101000000111111001010   13. 这个是选择运算的结果: 010011110010100110101000000001011111111001010101 这个是异或运算的结果: 101010111000101011011001011001011000101110011100 这里是S盒变换的结果: 011010011001000100111110111011001111000001000000 这是对S盒变换内容做P置换以后的内容: 10111100001110001100011110101001 这个是解密函数中第13轮的左右两个的结果: 这个是左边的结果: 10011001001101000000111111001010 这个是右边的结果: 00010111010111000100001001101011   14. 这个是选择运算的结果: 100010101110101011111000001000000100001101010110 这个是异或运算的结果: 010110101011011111001010011111111110001111011010 这里是S盒变换的结果: 110011110001011001100110101000001111000001000000 这是对S盒变换内容做P置换以后的内容: 01000100111011001101010010011001 这个是解密函数中第14轮的左右两个的结果: 这个是左边的结果: 00010111010111000100001001101011 这个是右边的结果: 11011101110110001101101101010011   15. 这个是选择运算的结果: 111011111011111011110001011011110110101010100111 这个是异或运算的结果: 110011110101100000010101001111110110110111110000 这里是S盒变换的结果: 101101111101001000011010111100001111000001000000 这是对S盒变换内容做P置换以后的内容: 01110110111100010100011100010011 这个是解密函数中第15轮的左右两个的结果: 这个是左边的结果: 11011101110110001101101101010011 这个是右边的结果: 01100001101011010000010101111000   16. 这个是选择运算的结果: 001100000011110101011010100000001010101111110000 这个是异或运算的结果: 011100000000101111100100100101111000100110111110 这里是S盒变换的结果: 000011110111100111000001110110001111000001000000 这是对S盒变换内容做P置换以后的内容: 11001111000111010110000001010101 这个是解密函数中第16轮的左右两个的结果: 这个是左边的结果: 00010010110001011011101100000110 这个是右边的结果: 01100001101011010000010101111000     这个是最终解密的结果: 1011110001000101001110010010011001000110101001101001001000110100     好了,这里就给出3组测试用例,相信在这样的检测下,你的程序可以正确的出来,我哦们的宗旨是:让所有的问题都暴露在阳光下!祝你编程顺利哦,亲!
  • 热度 6
    2012-11-4 08:14
    358 次阅读|
    0 个评论
        测试用例2:   这个是输入的需要加密的原始数据: 1011110001000101001110010010011001000110101001101001001000110100 这个是输入的密钥:(这里与第一次相比,没有改动密钥) 1011000100110010011100110010010000110101001101100111011100111001     明文变换:   这个是对数据做第一次置换IP后的结果: 0001001011000101101110110000011001100001101011010000010101111000   密钥变换:   这里输出的是产生的16个字密钥 010100000010110010111110000101110010101011000010 010100001110111011100100010100000010001101000111 110100001111110100100110111101101000000010001100 111000001010011101100111010000000011011111001011 111000011101011000100111001111101011000000101001 111000011001001111110010011000100101110101100010 101101001101001011110011000011001010100100111010 101101110101001101010010111001010101110001010000 001001100111101101011011110010111001101001000000 001011110111010101010001110100001100011100111000 010011110100110111011001000110010001111000001100 010111111110000110011001110110000111000010110000 000111111000110110001011001000010110101000101101 011110110010100010001111101100100011100010010010 001110011010110010001100101001010000001100110111 110100010011110011001100101001110100001110000000     加密部分:   这个是加密流程中开始时的左右两个的结果: 这个是左边的结果: 00010010110001011011101100000110 这个是右边的结果: 01100001101011010000010101111000   1. 这个是选择运算的结果: 001100000011110101011010100000001010101111110000 这个是异或运算的结果: 011000000001000111100100100101111000000100110010 这里是S盒变换的结果: 010100111001100111000001001001100001001011000101 这是对S盒变换内容做P置换以后的内容: 11000101000001101110010101100010 这个是加密函数中第1轮的左右两个的结果: 这个是左边的结果: 01100001101011010000010101111000 这个是右边的结果: 11010111110000110101111001100100   2. 这个是选择运算的结果: 011010101111111000000110101011111100001100001001 这个是异或运算的结果: 001110100001000011100010111111111110000001001110 这里是S盒变换的结果: 100011010111011000110110110100010001001011000101 这是对S盒变换内容做P置换以后的内容: 00100110111110010101100010011101 这个是加密函数中第2轮的左右两个的结果: 这个是左边的结果: 11010111110000110101111001100100 这个是右边的结果: 01000111010101000101110111100101   3. 这个是选择运算的结果: 101000001110101010101000001011111011111100001010 这个是异或运算的结果: 011100000001011110001110110110010011111110000110 这里是S盒变换的结果: 000000111000101001010001001001000001001011000101 这是对S盒变换内容做P置换以后的内容: 01100000010001000110010101100000 这个是加密函数中第3轮的左右两个的结果: 这个是左边的结果: 01000111010101000101110111100101 这个是右边的结果: 10110111100001110011101100000100   4. 这个是选择运算的结果: 010110101111110000001110100111110110100000001001 这个是异或运算的结果: 101110100101101101101001110111110101111111000010 这里是S盒变换的结果: 101110101000101010010001110000100001001011000101 这是对S盒变换内容做P置换以后的内容: 01100001110110100010001101000011 这个是加密函数中第4轮的左右两个的结果: 这个是左边的结果: 10110111100001110011101100000100 这个是右边的结果: 00100110100011100111111010100110   5. 这个是选择运算的结果: 000100001101010001011100001111111101010100001100 这个是异或运算的结果: 111100010000001001111011000000010110010100100101 这里是S盒变换的结果: 010110010011011100100100100111100001001011000101 这是对S盒变换内容做P置换以后的内容: 10001110010010101101000010101111 这个是加密函数中第5轮的左右两个的结果: 这个是左边的结果: 00100110100011100111111010100110 这个是右边的结果: 00111001110011011110101110101011   6. 这个是选择运算的结果: 100111110011111001011011111101010111110101010110 这个是异或运算的结果: 011111101010110110101001100101110010000000110100 这里是S盒变换的结果: 100001001100101011000000010010100001001011000101 这是对S盒变换内容做P置换以后的内容: 00001001110101110000000101010000 这个是加密函数中第6轮的左右两个的结果: 这个是左边的结果: 00111001110011011110101110101011 这个是右边的结果: 00101111010110010111111111110110   7. 这个是选择运算的结果: 000101011110101011110010101111111111111110101100 这个是异或运算的结果: 101000010011100000000001101100110101011010010110 这里是S盒变换的结果: 110100001101110101110001101011100001001011000101 这是对S盒变换内容做P置换以后的内容: 10101100100001111011010111100011 这个是加密函数中第7轮的左右两个的结果: 这个是左边的结果: 00101111010110010111111111110110 这个是右边的结果: 10010101010010100101111001001000   8. 这个是选择运算的结果: 010010101010101001010100001011111100001001010001 这个是异或运算的结果: 111111011111100100000110110010101001111000000001 这里是S盒变换的结果: 110101010100001110011001000000010001001011000101 这是对S盒变换内容做P置换以后的内容: 10110001110000011110100000010010 这个是加密函数中第8轮的左右两个的结果: 这个是左边的结果: 10010101010010100101111001001000 这个是右边的结果: 10011110100110001001011111100100   9. 这个是选择运算的结果: 010011111101010011110001010010101111111100001001 这个是异或运算的结果: 011010011010111110101010100000010110010101001001 这里是S盒变换的结果: 100100000111101101000100010110100001001011000101 这是对S盒变换内容做P置换以后的内容: 10001110110101110000000001001110 这个是加密函数中第9轮的左右两个的结果: 这个是左边的结果: 10011110100110001001011111100100 这个是右边的结果: 00011011100111010101111000000110   10. 这个是选择运算的结果: 000011110111110011111010101011111100000000001100 这个是异或运算的结果: 001000000000100110101011011111110000011100110100 这里是S盒变换的结果: 001011111001000101100111011010100001001011000101 这是对S盒变换内容做P置换以后的内容: 11001100001111100110011110011000 这个是加密函数中第10轮的左右两个的结果: 这个是左边的结果: 00011011100111010101111000000110 这个是右边的结果: 01010010101001101111000001111100   11. 这个是选择运算的结果: 001010100101010100001101011110100000001111111000 这个是异或运算的结果: 011001010001100011010100011000110001110111110100 这里是S盒变换的结果: 100111001010100011011011111110100001001011000101 这是对S盒变换内容做P置换以后的内容: 00111011101111100010010101010111 这个是加密函数中第11轮的左右两个的结果: 这个是左边的结果: 01010010101001101111000001111100 这个是右边的结果: 00100000001000110111101101010001   12. 这个是选择运算的结果: 100100000000000100000110101111110110101010100010 这个是异或运算的结果: 110011111110000010011111011001110001101000010010 这里是S盒变换的结果: 101111110000100100111011110010010001001011000101 这是对S盒变换内容做P置换以后的内容: 11111000101110000110101011010011 这个是加密函数中第12轮的左右两个的结果: 这个是左边的结果: 00100000001000110111101101010001 这个是右边的结果: 10101010000111101001101010101111   13. 这个是选择运算的结果: 110101010100000011111101010011110101010101011111 这个是异或运算的结果: 110010101100110101110110011011100011111101110010 这里是S盒变换的结果: 110011011110111010010011001101100001001011000101 这是对S盒变换内容做P置换以后的内容: 00100011111010111111010101110100 这个是加密函数中第13轮的左右两个的结果: 这个是左边的结果: 10101010000111101001101010101111 这个是右边的结果: 00000011110010001000111000100101   14. 这个是选择运算的结果: 100000000111111001010001010001011100000100001010 这个是异或运算的结果: 111110110101011011011110111101111111100110011000 这里是S盒变换的结果: 000001111011111101011101110101010001001011000101 这是对S盒变换内容做P置换以后的内容: 11110110010101000111100101111101 这个是加密函数中第14轮的左右两个的结果: 这个是左边的结果: 00000011110010001000111000100101 这个是右边的结果: 01011100010010101110001111010010   15. 这个是选择运算的结果: 001011111000001001010101011100000111111010100100 这个是异或运算的结果: 000101100010111011011001110101010111110110010011 这里是S盒变换的结果: 011111100101000100001110100001010001001011000101 这是对S盒变换内容做P置换以后的内容: 11010100001010011000101000111011 这个是加密函数中第15轮的左右两个的结果: 这个是左边的结果: 01011100010010101110001111010010 这个是右边的结果: 11010111111000010000010000011110   16. 这个是选择运算的结果: 011010101111111100000010100000001000000011111101 这个是异或运算的结果: 101110111100001111001110001001111100001101111101 这里是S盒变换的结果: 101100101010101001001011000101100001001011000101 这是对S盒变换内容做P置换以后的内容: 01010010111001100010001101100110 这个是加密函数中第16轮的左右两个的结果: 这个是左边的结果: 00001110101011001100000010110100 这个是右边的结果: 11010111111000010000010000011110     这个是最终加密的结果: 1010000011000010110110110101001010000011001100011010010010110101       解密部分:   这个是输入的需要解密的原始数据: 1010000011000010110110110101001010000011001100011010010010110101 这个是输入的密钥: 1011000100110010011100110010010000110101001101100111011100111001   明文变换:   这个是对数据做第一次置换IP后的结果: 0000111010101100110000001011010011010111111000010000010000011110   密钥变换:   这里输出的是产生的16个字密钥 010100000010110010111110000101110010101011000010 010100001110111011100100010100000010001101000111 110100001111110100100110111101101000000010001100 111000001010011101100111010000000011011111001011 111000011101011000100111001111101011000000101001 111000011001001111110010011000100101110101100010 101101001101001011110011000011001010100100111010 101101110101001101010010111001010101110001010000 001001100111101101011011110010111001101001000000 001011110111010101010001110100001100011100111000 010011110100110111011001000110010001111000001100 010111111110000110011001110110000111000010110000 000111111000110110001011001000010110101000101101 011110110010100010001111101100100011100010010010 001110011010110010001100101001010000001100110111 110100010011110011001100101001110100001110000000     这个是解密流程中开始时的左右两个的结果: 这个是左边的结果: 00001110101011001100000010110100 这个是右边的结果: 11010111111000010000010000011110     1. 这个是选择运算的结果: 011010101111111100000010100000001000000011111101 这个是异或运算的结果: 101110111100001111001110001001111100001101111101 这里是S盒变换的结果: 101100101010101001001011000101100000111010101100 这是对S盒变换内容做P置换以后的内容: 01010010111001100010001101100110 这个是解密函数中第1轮的左右两个的结果: 这个是左边的结果: 11010111111000010000010000011110 这个是右边的结果: 01011100010010101110001111010010   2. 这个是选择运算的结果: 001011111000001001010101011100000111111010100100 这个是异或运算的结果: 000101100010111011011001110101010111110110010011 这里是S盒变换的结果: 011111100101000100001110100001010000111010101100 这是对S盒变换内容做P置换以后的内容: 11010100001010011000101000111011 这个是解密函数中第2轮的左右两个的结果: 这个是左边的结果: 01011100010010101110001111010010 这个是右边的结果: 00000011110010001000111000100101   3. 这个是选择运算的结果: 100000000111111001010001010001011100000100001010 这个是异或运算的结果: 111110110101011011011110111101111111100110011000 这里是S盒变换的结果: 000001111011111101011101110101010000111010101100 这是对S盒变换内容做P置换以后的内容: 11110110010101000111100101111101 这个是解密函数中第3轮的左右两个的结果: 这个是左边的结果: 00000011110010001000111000100101 这个是右边的结果: 10101010000111101001101010101111   4. 这个是选择运算的结果: 110101010100000011111101010011110101010101011111 这个是异或运算的结果: 110010101100110101110110011011100011111101110010 这里是S盒变换的结果: 110011011110111010010011001101100000111010101100 这是对S盒变换内容做P置换以后的内容: 00100011111010111111010101110100 这个是解密函数中第4轮的左右两个的结果: 这个是左边的结果: 10101010000111101001101010101111 这个是右边的结果: 00100000001000110111101101010001   5. 这个是选择运算的结果: 100100000000000100000110101111110110101010100010 这个是异或运算的结果: 110011111110000010011111011001110001101000010010 这里是S盒变换的结果: 101111110000100100111011110010010000111010101100 这是对S盒变换内容做P置换以后的内容: 11111000101110000110101011010011 这个是解密函数中第5轮的左右两个的结果: 这个是左边的结果: 00100000001000110111101101010001 这个是右边的结果: 01010010101001101111000001111100   6. 这个是选择运算的结果: 001010100101010100001101011110100000001111111000 这个是异或运算的结果: 011001010001100011010100011000110001110111110100 这里是S盒变换的结果: 100111001010100011011011111110100000111010101100 这是对S盒变换内容做P置换以后的内容: 00111011101111100010010101010111 这个是解密函数中第6轮的左右两个的结果: 这个是左边的结果: 01010010101001101111000001111100 这个是右边的结果: 00011011100111010101111000000110   7. 这个是选择运算的结果: 000011110111110011111010101011111100000000001100 这个是异或运算的结果: 001000000000100110101011011111110000011100110100 这里是S盒变换的结果: 001011111001000101100111011010100000111010101100 这是对S盒变换内容做P置换以后的内容: 11001100001111100110011110011000 这个是解密函数中第7轮的左右两个的结果: 这个是左边的结果: 00011011100111010101111000000110 这个是右边的结果: 10011110100110001001011111100100   8. 这个是选择运算的结果: 010011111101010011110001010010101111111100001001 这个是异或运算的结果: 011010011010111110101010100000010110010101001001 这里是S盒变换的结果: 100100000111101101000100010110100000111010101100 这是对S盒变换内容做P置换以后的内容: 10001110110101110000000001001110 这个是解密函数中第8轮的左右两个的结果: 这个是左边的结果: 10011110100110001001011111100100 这个是右边的结果: 10010101010010100101111001001000   9. 这个是选择运算的结果: 010010101010101001010100001011111100001001010001 这个是异或运算的结果: 111111011111100100000110110010101001111000000001 这里是S盒变换的结果: 110101010100001110011001000000010000111010101100 这是对S盒变换内容做P置换以后的内容: 10110001110000011110100000010010 这个是解密函数中第9轮的左右两个的结果: 这个是左边的结果: 10010101010010100101111001001000 这个是右边的结果: 00101111010110010111111111110110   10. 这个是选择运算的结果: 000101011110101011110010101111111111111110101100 这个是异或运算的结果: 101000010011100000000001101100110101011010010110 这里是S盒变换的结果: 110100001101110101110001101011100000111010101100 这是对S盒变换内容做P置换以后的内容: 10101100100001111011010111100011 这个是解密函数中第10轮的左右两个的结果: 这个是左边的结果: 00101111010110010111111111110110 这个是右边的结果: 00111001110011011110101110101011   11. 这个是选择运算的结果: 100111110011111001011011111101010111110101010110 这个是异或运算的结果: 011111101010110110101001100101110010000000110100 这里是S盒变换的结果: 100001001100101011000000010010100000111010101100 这是对S盒变换内容做P置换以后的内容: 00001001110101110000000101010000 这个是解密函数中第11轮的左右两个的结果: 这个是左边的结果: 00111001110011011110101110101011 这个是右边的结果: 00100110100011100111111010100110   12. 这个是选择运算的结果: 000100001101010001011100001111111101010100001100 这个是异或运算的结果: 111100010000001001111011000000010110010100100101 这里是S盒变换的结果: 010110010011011100100100100111100000111010101100 这是对S盒变换内容做P置换以后的内容: 10001110010010101101000010101111 这个是解密函数中第12轮的左右两个的结果: 这个是左边的结果: 00100110100011100111111010100110 这个是右边的结果: 10110111100001110011101100000100   13. 这个是选择运算的结果: 010110101111110000001110100111110110100000001001 这个是异或运算的结果: 101110100101101101101001110111110101111111000010 这里是S盒变换的结果: 101110101000101010010001110000100000111010101100 这是对S盒变换内容做P置换以后的内容: 01100001110110100010001101000011 这个是解密函数中第13轮的左右两个的结果: 这个是左边的结果: 10110111100001110011101100000100 这个是右边的结果: 01000111010101000101110111100101   14. 这个是选择运算的结果: 101000001110101010101000001011111011111100001010 这个是异或运算的结果: 011100000001011110001110110110010011111110000110 这里是S盒变换的结果: 000000111000101001010001001001000000111010101100 这是对S盒变换内容做P置换以后的内容: 01100000010001000110010101100000 这个是解密函数中第14轮的左右两个的结果: 这个是左边的结果: 01000111010101000101110111100101 这个是右边的结果: 11010111110000110101111001100100   15. 这个是选择运算的结果: 011010101111111000000110101011111100001100001001 这个是异或运算的结果: 001110100001000011100010111111111110000001001110 这里是S盒变换的结果: 100011010111011000110110110100010000111010101100 这是对S盒变换内容做P置换以后的内容: 00100110111110010101100010011101 这个是解密函数中第15轮的左右两个的结果: 这个是左边的结果: 11010111110000110101111001100100 这个是右边的结果: 01100001101011010000010101111000   16. 这个是选择运算的结果: 001100000011110101011010100000001010101111110000 这个是异或运算的结果: 011000000001000111100100100101111000000100110010 这里是S盒变换的结果: 010100111001100111000001001001100000111010101100 这是对S盒变换内容做P置换以后的内容: 11000101000001101110010101100010 这个是解密函数中第16轮的左右两个的结果: 这个是左边的结果: 00010010110001011011101100000110 这个是右边的结果: 01100001101011010000010101111000     这个是最终解密的结果: 1011110001000101001110010010011001000110101001101001001000110100
  • 热度 5
    2012-11-4 08:13
    529 次阅读|
    0 个评论
    DES的编程是一件并不难的事情,但是正像之前说的那样,编完了程序需要去测试,所以这里测试环节就非常关键了,我在编写程序的时候,在网上并没有找到详细的一个编程的数据例子,也就是在程序的关键部分产生的数据的记录和公开,而这对于这种加密算法的正确性的检验和程序错误的排查却是至关重要的,所以这里把一个正确的加密的程序的每一步的关键输出给出,以便于编写者调试。   我们可以将数据分为3部分,第一部分是对初始的明文做出变换后的结果,第二部分是对密钥进行变换后得出的结果,最后一部分就是加密流程中每一步输出的结果直至16轮的最后一轮输出需要的密文,当然,解密的时候和加密过车公除了一部不同,那就是密钥的使用顺序,其他都是一样了,不过这里还是把解密的数据流程也给出,其实关键就在于你能把数据加密过来,然后也必须能够把加密后的密文解密回去,这样的程序基本上就是对的了,关键的关键是,在你无法解密回去的时候,你知道是程序除了问题,但是问题出在哪里?你尽可以自己手工计算,然后进行对照,但是那样的时间较为漫长,所以这里给出正确程序直接输出的数据,也是为了更好的及中噢乖注意力于程序本身。,因为是加密的二进制码,所以给出的例子中的所有数据也都是二进制码,以后的转换是程序编写者自己的事喽。   第一个测试用例:   这个是需要加密的原始数据: 0101110111000101001110011010011001000100101001101001101001100000 这个是输入的密钥: 1011000100110010011100110010010000110101001101100111011100111001   密文变换: 这个是对数据做第一次置换IP后的结果: 1001001101000101001110110000011101101010101011000100010101101000 密钥变换: 这里输出的是产生的16个字密钥 010100000010110010111110000101110010101011000010 010100001110111011100100010100000010001101000111 110100001111110100100110111101101000000010001100 111000001010011101100111010000000011011111001011 111000011101011000100111001111101011000000101001 111000011001001111110010011000100101110101100010 101101001101001011110011000011001010100100111010 101101110101001101010010111001010101110001010000 001001100111101101011011110010111001101001000000 001011110111010101010001110100001100011100111000 010011110100110111011001000110010001111000001100 010111111110000110011001110110000111000010110000 000111111000110110001011001000010110101000101101 011110110010100010001111101100100011100010010010 001110011010110010001100101001010000001100110111 110100010011110011001100101001110100001110000000   加密流程:   这个是加密流程中开始时的左右两个的结果: 这个是左边的结果: 10010011010001010011101100000111 这个是右边的结果: 01101010101011000100010101101000   1. 这个是选择运算的结果: 001101010101010101011000001000001010101101010000 这个是异或运算的结果: 011001010111100111100110001101111000000110010010 这里是S盒变换的结果: 100110100000000011010001111010011001001101000101 这是对S盒变换内容做P置换以后的内容: 01101001100111000010110000000011 这个是加密函数中第1轮的左右两个的结果: 这个是左边的结果: 01101010101011000100010101101000 这个是右边的结果: 11111010110110010001011100000100   2. 这个是选择运算的结果: 011111110101011011110010100010101110100000001001 这个是异或运算的结果: 001011111011100000010110110110101100101101001110 这里是S盒变换的结果: 001001011101010101011100101000011001001101000101 这是对S盒变换内容做P置换以后的内容: 10110100000001010101111100011001 这个是加密函数中第2轮的左右两个的结果: 这个是左边的结果: 11111010110110010001011100000100 这个是右边的结果: 11011110101010010001101001110001   3. 这个是选择运算的结果: 111011111101010101010010100011110100001110100011 这个是异或运算的结果: 001111110010100001110100011110011100001100101111 这里是S盒变换的结果: 000110000001001110010101100011011001001101000101 这是对S盒变换内容做P置换以后的内容: 10101101010010000010100000101011 这个是加密函数中第3轮的左右两个的结果: 这个是左边的结果: 11011110101010010001101001110001 这个是右边的结果: 01010111100100010011111100101111   4. 这个是选择运算的结果: 101010101111110010100010100111111110100101011110 这个是异或运算的结果: 010010100101101111000101110111111101111010010101 这里是S盒变换的结果: 101010100111101110011000010101101001001101000101 这是对S盒变换内容做P置换以后的内容: 11110111110110110000001001100100 这个是加密函数中第4轮的左右两个的结果: 这个是左边的结果: 01010111100100010011111100101111 这个是右边的结果: 00101001011100100001100000010101   5. 这个是选择运算的结果: 100101010010101110100100000011110000000010101010 这个是异或运算的结果: 011101001111110110000011001100011011000010000011 这里是S盒变换的结果: 001111101100100010111011101111111001001101000101 这是对S盒变换内容做P置换以后的内容: 01111011001010110010111111110011 这个是加密函数中第5轮的左右两个的结果: 这个是左边的结果: 00101001011100100001100000010101 这个是右边的结果: 00101100101110100001000011011100   6. 这个是选择运算的结果: 000101011001010111110100000010100001011011111000 这个是异或运算的结果: 111101000000011000000110011010000100101110011010 这里是S盒变换的结果: 011011111011001100001010111000001001001101000101 这是对S盒变换内容做P置换以后的内容: 11010100011110001100011100010101 这个是加密函数中第6轮的左右两个的结果: 这个是左边的结果: 00101100101110100001000011011100 这个是右边的结果: 11111101000010101101111100000000   7. 这个是选择运算的结果: 011111111010100001010101011011111110100000000001 这个是异或运算的结果: 110010110111101010100110011000110100000100111011 这里是S盒变换的结果: 110011001111000011010100001001011001001101000101 这是对S盒变换内容做P置换以后的内容: 00100101100011011000110100111100 这个是加密函数中第7轮的左右两个的结果: 这个是左边的结果: 11111101000010101101111100000000 这个是右边的结果: 00001001001101111001110111100000   8. 这个是选择运算的结果: 000001010010100110101111110011111011111100000000 这个是异或运算的结果: 101100100111101011111101001010101110001101010000 这里是S盒变换的结果: 001000011001001010100011000110101001001101000101 这是对S盒变换内容做P置换以后的内容: 00001111011000100110001110000000 这个是加密函数中第8轮的左右两个的结果: 这个是左边的结果: 00001001001101111001110111100000 这个是右边的结果: 11110010011010001011110010000000   9. 这个是选择运算的结果: 011110100100001101010001010111111001010000000001 这个是异或运算的结果: 010111000011100000001010100101000000111001000001 这里是S盒变换的结果: 101111011101011011001100111000011001001101000101 这是对S盒变换内容做P置换以后的内容: 00010101110111010101111100011011 这个是加密函数中第9轮的左右两个的结果: 这个是左边的结果: 11110010011010001011110010000000 这个是右边的结果: 00011100111010101100001011111011   10. 这个是选择运算的结果: 100011111001011101010101011000000101011111110110 这个是异或运算的结果: 101000001110001000000100101100001001000011001110 这里是S盒变换的结果: 110101000110111001110111000000011001001101000101 这是对S盒变换内容做P置换以后的内容: 00100000111001011011100011011110 这个是加密函数中第10轮的左右两个的结果: 这个是左边的结果: 00011100111010101100001011111011 这个是右边的结果: 11010010100011010000010001011110   11. 这个是选择运算的结果: 011010100101010001011010100000001000001011111101 这个是异或运算的结果: 001001010001100110000011100110011001110011110001 这里是S盒变换的结果: 111011001001100010110000010111111001001101000101 这是对S盒变换内容做P置换以后的内容: 00101111100110101000101111110000 这个是加密函数中第11轮的左右两个的结果: 这个是左边的结果: 11010010100011010000010001011110 这个是右边的结果: 00110011011100000100100100001011   12. 这个是选择运算的结果: 100110100110101110100000001001010010100001010110 这个是异或运算的结果: 110001011000101000111001111111010101100011100110 这里是S盒变换的结果: 010111001000110000111101101100011001001101000101 这是对S盒变换内容做P置换以后的内容: 00110010000010001011110111011011 这个是加密函数中第12轮的左右两个的结果: 这个是左边的结果: 00110011011100000100100100001011 这个是右边的结果: 11100000100001011011100110000101   13. 这个是选择运算的结果: 111100000001010000001011110111110011110000001011 这个是异或运算的结果: 111011111001100110000000111111100101011000100110 这里是S盒变换的结果: 000000001001011100110010010100011001001101000101 这是对S盒变换内容做P置换以后的内容: 10100110011100000001100110000000 这个是加密函数中第13轮的左右两个的结果: 这个是左边的结果: 11100000100001011011100110000101 这个是右边的结果: 10010101000000000101000010001011   14. 这个是选择运算的结果: 110010101010100000000000001010100001010001010111 这个是异或运算的结果: 101100011000000010001111100110000010110011000101 这里是S盒变换的结果: 001011000000001110110001010111011001001101000101 这是对S盒变换内容做P置换以后的内容: 10101011010110000010101010110000 这个是加密函数中第14轮的左右两个的结果: 这个是左边的结果: 10010101000000000101000010001011 这个是右边的结果: 01001011110111011001001100110101   15. 这个是选择运算的结果: 101001010111111011111011110010100110100110101010 这个是异或运算的结果: 100111001101001001110111011011110110101010011101 这里是S盒变换的结果: 001010000011101110011010001110011001001101000101 这是对S盒变换内容做P置换以后的内容: 10111111011010000000111001000100 这个是加密函数中第15轮的左右两个的结果: 这个是左边的结果: 01001011110111011001001100110101 这个是右边的结果: 00101010011010000101111011001111   16. 这个是选择运算的结果: 100101010100001101010000001011111101011001011110 这个是异或运算的结果: 010001000111111110011100100010001001010111011110 这里是S盒变换的结果: 101001110111010000100111110001111001001101000101 这是对S盒变换内容做P置换以后的内容: 01000100101100110111101010111101 这个是加密函数中第16轮的左右两个的结果: 这个是左边的结果: 00001111011011101110100110001000 这个是右边的结果: 00101010011010000101111011001111   这样以后最终得到的加密的结果: 0100011011011010010110101111111100001000101101000011111000000111        解密部分   这个是输入的需要解密的原始数据: 0100011011011010010110101111111100001000101101000011111000000111 这个是输入的密钥: 1011000100110010011100110010010000110101001101100111011100111001   明文变换:   这个是对数据做第一次置换IP后的结果: 0000111101101110111010011000100000101010011010000101111011001111   密钥变换:   这里输出的是产生的16个字密钥 010100000010110010111110000101110010101011000010 010100001110111011100100010100000010001101000111 110100001111110100100110111101101000000010001100 111000001010011101100111010000000011011111001011 111000011101011000100111001111101011000000101001 111000011001001111110010011000100101110101100010 101101001101001011110011000011001010100100111010 101101110101001101010010111001010101110001010000 001001100111101101011011110010111001101001000000 001011110111010101010001110100001100011100111000 010011110100110111011001000110010001111000001100 010111111110000110011001110110000111000010110000 000111111000110110001011001000010110101000101101 011110110010100010001111101100100011100010010010 001110011010110010001100101001010000001100110111 110100010011110011001100101001110100001110000000   这个是解密流程中开始时的左右两个的结果: 这个是左边的结果: 00001111011011101110100110001000 这个是右边的结果: 00101010011010000101111011001111   1. 这个是选择运算的结果: 100101010100001101010000001011111101011001011110 这个是异或运算的结果: 010001000111111110011100100010001001010111011110 这里是S盒变换的结果: 101001110111010000100111110001110000111101101110 这是对S盒变换内容做P置换以后的内容: 01000100101100110111101010111101 这个是解密函数中第1轮的左右两个的结果: 这个是左边的结果: 00101010011010000101111011001111 这个是右边的结果: 01001011110111011001001100110101   2. 这个是选择运算的结果: 101001010111111011111011110010100110100110101010 这个是异或运算的结果: 100111001101001001110111011011110110101010011101 这里是S盒变换的结果: 001010000011101110011010001110010000111101101110 这是对S盒变换内容做P置换以后的内容: 10111111011010000000111001000100 这个是解密函数中第2轮的左右两个的结果: 这个是左边的结果: 01001011110111011001001100110101 这个是右边的结果: 10010101000000000101000010001011   3. 这个是选择运算的结果: 110010101010100000000000001010100001010001010111 这个是异或运算的结果: 101100011000000010001111100110000010110011000101 这里是S盒变换的结果: 001011000000001110110001010111010000111101101110 这是对S盒变换内容做P置换以后的内容: 10101011010110000010101010110000 这个是解密函数中第3轮的左右两个的结果: 这个是左边的结果: 10010101000000000101000010001011 这个是右边的结果: 11100000100001011011100110000101   4. 这个是选择运算的结果: 111100000001010000001011110111110011110000001011 这个是异或运算的结果: 111011111001100110000000111111100101011000100110 这里是S盒变换的结果: 000000001001011100110010010100010000111101101110 这是对S盒变换内容做P置换以后的内容: 10100110011100000001100110000000 这个是解密函数中第4轮的左右两个的结果: 这个是左边的结果: 11100000100001011011100110000101 这个是右边的结果: 00110011011100000100100100001011   5. 这个是选择运算的结果: 100110100110101110100000001001010010100001010110 这个是异或运算的结果: 110001011000101000111001111111010101100011100110 这里是S盒变换的结果: 010111001000110000111101101100010000111101101110 这是对S盒变换内容做P置换以后的内容: 00110010000010001011110111011011 这个是解密函数中第5轮的左右两个的结果: 这个是左边的结果: 00110011011100000100100100001011 这个是右边的结果: 11010010100011010000010001011110   6. 这个是选择运算的结果: 011010100101010001011010100000001000001011111101 这个是异或运算的结果: 001001010001100110000011100110011001110011110001 这里是S盒变换的结果: 111011001001100010110000010111110000111101101110 这是对S盒变换内容做P置换以后的内容: 00101111100110101000101111110000 这个是解密函数中第6轮的左右两个的结果: 这个是左边的结果: 11010010100011010000010001011110 这个是右边的结果: 00011100111010101100001011111011   7. 这个是选择运算的结果: 100011111001011101010101011000000101011111110110 这个是异或运算的结果: 101000001110001000000100101100001001000011001110 这里是S盒变换的结果: 110101000110111001110111000000010000111101101110 这是对S盒变换内容做P置换以后的内容: 00100000111001011011100011011110 这个是解密函数中第7轮的左右两个的结果: 这个是左边的结果: 00011100111010101100001011111011 这个是右边的结果: 11110010011010001011110010000000   8. 这个是选择运算的结果: 011110100100001101010001010111111001010000000001 这个是异或运算的结果: 010111000011100000001010100101000000111001000001 这里是S盒变换的结果: 101111011101011011001100111000010000111101101110 这是对S盒变换内容做P置换以后的内容: 00010101110111010101111100011011 这个是解密函数中第8轮的左右两个的结果: 这个是左边的结果: 11110010011010001011110010000000 这个是右边的结果: 00001001001101111001110111100000   9. 这个是选择运算的结果: 000001010010100110101111110011111011111100000000 这个是异或运算的结果: 101100100111101011111101001010101110001101010000 这里是S盒变换的结果: 001000011001001010100011000110100000111101101110 这是对S盒变换内容做P置换以后的内容: 00001111011000100110001110000000 这个是解密函数中第9轮的左右两个的结果: 这个是左边的结果: 00001001001101111001110111100000 这个是右边的结果: 11111101000010101101111100000000   10. 这个是选择运算的结果: 011111111010100001010101011011111110100000000001 这个是异或运算的结果: 110010110111101010100110011000110100000100111011 这里是S盒变换的结果: 110011001111000011010100001001010000111101101110 这是对S盒变换内容做P置换以后的内容: 00100101100011011000110100111100 这个是解密函数中第10轮的左右两个的结果: 这个是左边的结果: 11111101000010101101111100000000 这个是右边的结果: 00101100101110100001000011011100   11. 这个是选择运算的结果: 000101011001010111110100000010100001011011111000 这个是异或运算的结果: 111101000000011000000110011010000100101110011010 这里是S盒变换的结果: 011011111011001100001010111000000000111101101110 这是对S盒变换内容做P置换以后的内容: 11010100011110001100011100010101 这个是解密函数中第11轮的左右两个的结果: 这个是左边的结果: 00101100101110100001000011011100 这个是右边的结果: 00101001011100100001100000010101   12. 这个是选择运算的结果: 100101010010101110100100000011110000000010101010 这个是异或运算的结果: 011101001111110110000011001100011011000010000011 这里是S盒变换的结果: 001111101100100010111011101111110000111101101110 这是对S盒变换内容做P置换以后的内容: 01111011001010110010111111110011 这个是解密函数中第12轮的左右两个的结果: 这个是左边的结果: 00101001011100100001100000010101 这个是右边的结果: 01010111100100010011111100101111   13. 这个是选择运算的结果: 101010101111110010100010100111111110100101011110 这个是异或运算的结果: 010010100101101111000101110111111101111010010101 这里是S盒变换的结果: 101010100111101110011000010101100000111101101110 这是对S盒变换内容做P置换以后的内容: 11110111110110110000001001100100 这个是解密函数中第13轮的左右两个的结果: 这个是左边的结果: 01010111100100010011111100101111 这个是右边的结果: 11011110101010010001101001110001   14. 这个是选择运算的结果: 111011111101010101010010100011110100001110100011 这个是异或运算的结果: 001111110010100001110100011110011100001100101111 这里是S盒变换的结果: 000110000001001110010101100011010000111101101110 这是对S盒变换内容做P置换以后的内容: 10101101010010000010100000101011 这个是解密函数中第14轮的左右两个的结果: 这个是左边的结果: 11011110101010010001101001110001 这个是右边的结果: 11111010110110010001011100000100   15. 这个是选择运算的结果: 011111110101011011110010100010101110100000001001 这个是异或运算的结果: 001011111011100000010110110110101100101101001110 这里是S盒变换的结果: 001001011101010101011100101000010000111101101110 这是对S盒变换内容做P置换以后的内容: 10110100000001010101111100011001 这个是解密函数中第15轮的左右两个的结果: 这个是左边的结果: 11111010110110010001011100000100 这个是右边的结果: 01101010101011000100010101101000   16. 这个是选择运算的结果: 001101010101010101011000001000001010101101010000 这个是异或运算的结果: 011001010111100111100110001101111000000110010010 这里是S盒变换的结果: 100110100000000011010001111010010000111101101110 这是对S盒变换内容做P置换以后的内容: 01101001100111000010110000000011 这个是解密函数中第16轮的左右两个的结果: 这个是左边的结果: 10010011010001010011101100000111 这个是右边的结果: 01101010101011000100010101101000     这个是最终解密的结果: 0101110111000101001110011010011001000100101001101001101001100000  
相关资源
  • 所需E币: 1
    时间: 2021-4-8 11:57
    大小: 2.21MB
    上传者: czd886
    基于DSP的DES和RSA算法条件接收双路解密系统设计
  • 所需E币: 1
    时间: 2021-3-15 17:16
    大小: 152.48KB
    上传者: ZHUANG
    DES算法在嵌入式DSP芯片中的实现
  • 所需E币: 0
    时间: 2020-12-25 17:03
    大小: 618.61KB
    上传者: czd886
    基于FPGA的DES算法硬件实现
  • 所需E币: 5
    时间: 2020-11-17 20:50
    大小: 15.12KB
    上传者: xgp416
    [摘要]两种加密算法  对称加解密算法:通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成。  公私钥加解密算法:通信双方(通信主体)彼此掌握不同的钥匙,不同方向的加解密由不同钥匙完成。  对称加解密算
  • 所需E币: 5
    时间: 2019-12-25 21:07
    大小: 87KB
    上传者: 238112554_qq
    描述RKE系统的工作原理及系统在功耗、稳定性、RKE发送和接收范围等性能设计上的独到之处;使用Freescale公司的高性能、小封装微处理器MC9RS08KA2,结合Maxim公司的收发IC设计射频数据处理前端,Microchip公司的专利技术Keeloq的滚动码编码芯片实现安全加密机制;详细地给出低成本的发送和接收部分的硬件原理图和软件设计参考流程图。……
  • 所需E币: 5
    时间: 2019-12-25 15:41
    大小: 139.95KB
    上传者: 2iot
    在分析DES、AES、IDEA等41种分组密码算法结构的基础上,研究了常用的不同位宽及不同模数的模乘运算.提出了专用的模乘运算指令,通过适配两个参数with与type,可灵活地完成16bit、32bit算术乘法以及模216+1乘的运算,并且实现了支持其执行的硬件单元.最后,以专用模乘运算指令为基本指令,给出了模232-1乘、模264乘运算的实现方法.可适配模乘运算指令研究戴紫彬,孟涛,朱忠义,张永福(解放军信息工程大学,河南郑州450004)摘要:在分析DES、AES、IDEA等41种分组密码算法结构的基础上,研究了常用的不同位宽及不同模数的模乘运算。提出了专用的模乘运算指令,通过适配两个参数wilh与‘ype,可灵活地完成16bit、32bit算术乘法以及模216+1乘的运算,并且实现了支持其执行的硬件单元。最后,以专用模乘运算指令为基本指令,给出了模22―1乘、模∥乘运算的实现方法。、关键词:分组密码可适配模乘运算专用指令Theresearchofreeon矗gurablemu……
  • 所需E币: 3
    时间: 2020-1-4 23:44
    大小: 26.8KB
    上传者: 238112554_qq
    DES加密算法的VHDL和VERILOG源程序……
广告