tag 标签: 加密

相关帖子
相关博文
  • 热度 1
    2021-6-2 16:35
    458 次阅读|
    0 个评论
    HDCP 2.x技术总览
    HDCP (High-Bandwidth Digital Content Protection) 是由Intel制订的加密技术,可运用在HDMI或是DisplayPort等数字接口传输高分辨率影音时,进行数字内容加密以防止影音信息被盗录。 各家厂商如果要让多媒体芯片具有上述功能,则需先向Intel的子公司DCP LLC购卖HDCP密钥授权,之后才能将该技术实作于芯片上。 而消费者如果要观赏具有HDCP保护的影音信息:如蓝光光盘、Netflix 影片,播放端(Blu-Ray Player)以及接受端(TV)均须购买有HDCP授权的产品,才能观赏到最高分辨率画质。如果有一方不支持,则会导致影片画质下降,或甚至无法拨放。 目前在于HDMI接口中,可支持的HDCP协议分为HDCP 1.4以及最新的HDCP 2.3(批注一),分别对应于FHD(1920x1080p), UHD4K(3840x2160 or 4096x2160)不同分辨率的影音保护。以当前消费市场的趋势,4K影片以及显示器逐渐普及,甚至近期各家厂商推出的支持8K分辨率的HDMI 2.1消费性电子产品,可预期将有越来越多的产品将采用HDCP 2.3协议, 因此本文将着重于HDCP 2.3协议的介绍 。 HDCP 2.3 介绍 图1:HDCP系统树形图(取自HDCP2.3 on HDMI Specification) 首先介绍HDCP 2.3实体架构,请参考图一,HDCP Transmitter 可透过输出口与下游装置连接:这些下游装置可为HDCP Receiver 或 HDCP Repeater,而该连接的HDCP Repeater 还能透过其下行输出口再连接其余装置,形成装置链接的树形图。但此树形图并非无限延伸,HDCP 2.3规范最多只能下接4层HDCP Repeater,且下接装置数量上限为32台。 接着再看HDCP 2.3协议层,其核心理念可分为三个部分。第一为认证(Authentication),传送装置会透过认证协议,确认下游是否为HDCP合法接受装置。第二,确认完双方的合法性后,再透过双方共享的密钥对影音进行加密/解密,避免外界被盗录。第三,由于HDCP装置中的密钥有可能被破解,因此传送装置会更新(Renewability)遭撤销的HDCP装置名单,确保不会传送HDCP加密信息给不合法的装置。 HDCP 2.3 协议介绍 第二章节提到的认证(Authentication),将细分为几个步骤进行介绍,以下内容仅介绍协议的名词以及概念,加密算法并不在本文讨论范围。 –Authentication and key exchange (AKE) 此流程(可参考图2、图2)目的是Tx确认Rx是否为合格HDCP装置,其中信息皆使用HDMI中的I2C接口传输,以下为流程介绍: 当双方装置链接后,Tx 会传送AKE_Init,内容包含一组64bit的伪随机码 rtx 以及 TxCaps (Tx HDCP 版本信息)给Rx,代表开始进行HDCP认证流程。 Tx在发送完AKE_Init后,Rx需在100ms内回传AKE_Send_Cert,如果超出时间则认证失败。AKE_Send_Cert 内容由certrx (包含Receiver ID, Public Key, DCP LLC Signature)、一组64bit的伪随机码 rrx 、RxCaps(RxHDCP 版本信息、Repeater bit)组成。 Tx 确认certrx 内的Receiver ID(相当于Rx的身分证)后,会产生两种分歧流程:如果Tx端没有储存对应该 Receiver ID 的 Master Key(km),则进行 (图2.1)流程-AKE Without stored km,若有则进行 (图2.2)流程。 如果双方装置为第一次链接,会进行 (图2.1)流程,Tx 除了检查ReceiverID外,还会使用 Tx 的Public Key确认certrx内DCP LLC Signature是否合法,如为非法将导致认证失败。 Tx 产生一组128bit的伪随机码作为Master Key(km),使用Rx的PublicKey对其加密产生Ekpub(km),并传送包含Ekpub(km)的AKE_No_Stored_km给Rx。 Rx 使用自己的private key (kprivrx)对Ekpub(km)解碼还原出km。 Tx 检查 System Renewability Message (批注二)的合法性,同样是藉由Tx 的PublicKey确认SRM 内的Signature是否合法。 8确认完SRM合法性后,再确认下游装置的Receiver ID 是否合法。(以上SRM、Receiver ID确认只会由最上游Tx 进行) Tx 与 Rx 进行Keyderivation,将获得的Master Key(km) 运算后得到 kd。 Tx 与 Rx 将双方交换过的信息(rtx, RxCaps, TxCaps) 以及kd再次运算后分别得到 H与H’。 Tx 读取Rx端发送的AKE_Send_H_Prime,如果H与H’值不相等,或是未在规定时间(1秒)内收到,将会导致认证失败。 –Pairing 接续上述步骤,Rx 利用 kprivrx 计算出128bit kh, 再将 km 使用 kh 加密得到Ekh(km) Rx 将包含 Ekh(km) 的 AKE_Send_Paring_Info 传给 Tx Tx在200ms的时间限制内读取 AKE_Send_Paring_Info, 并将对应该次流程的 Receiver ID的 m, km, Ekh(km)储存于内存内。 经过Pairing的双方设备再次认证时,因为Tx有储存对应该 Receiver ID 的 Master Key(km),会直接进入(图2.2)流程,相较于(图2.1)流程省略部分步骤(如Master Key计算),因此可减少HDCP认证时间。 图2(取自HDCP 2.3 on HDMI Specification) 图3(取自HDCP 2.3 on HDMI Specification) –Locality check 此步骤是在 HDCP2.3引入的新机制,目的为确保双方装置距离在合法范围内,若链接距离太远,讯息将不会于时限内收到而导致认证失败,认证流程如下: Tx 传送 LC_Init (包含 64bit伪随机码 rn) 给 Rx。 Tx 与 Rx 分别计算L、L’。 如果 L 与 L’不相同, 或是Tx在 20ms内未收到 L’,则导致认证失败。 认证失败,协议中规定 Tx 可再产生新的 rn, 并在重新尝试最多1023次。 图4(取自HDCP 2.3 on HDMI Specification) –Sessionkey exchange 完成AKE以及Locality check后,代表传输设备双方均为合法装置,可以开始进行影像加密传输,此步骤目的为双方加密/解密钥匙交换,SKE流程如下: Tx 产生一个128bit 的伪随机码Session Key(ks), 64bit 伪随机码 riv。 Tx进行 Key derivation 产生 128bit dkey2,并对ks 加密产生Edkey(ks)。 Tx 传送SKE_Send_Eks(Edkey(ks)、riv)给Rx。 Rx进行 Key derivation 产生 128bit dkey2,并将Edkey(ks) 解译得到ks。 使用Session Key 以及 Secret global constant(lc128,所有设备均为相同值)开始进行影音加密/解密。 –Authentication with repeater 在AKE流程中,如果Rx回传的Rx Caps内的Repeater bit为1时才会进行此流程。目的有两个: Repeater将下游信息,如设备数目、阶层、版本、Receiver ID整理后回传给最上游Tx,如果有信息不合法,如下接设备数目、阶层超过规范(31台、四阶),或是Receiver ID 在撤销名单中,会导致认证失败。 Repeater将Tx要传送的HDCP Content type(批注三)信息传给下游。 批注 批注一:HDCP2.3设计架构与HDCP1.4不同,因此并不向下兼容,但可透过使用 HDCP2.3 to HDCP1.4转换器,将播放端的HDCP2.3内容显示于只支持HDCP1.4的接收端。 批注二:System Renewability Message由Tx端储存,内容包含已被撤销的Receiver ID。因此Tx需确认SRM的合法性后,才能检查下游装置的 Receiver ID。 批注三:HDCP传输时可分为 Type0 & Type1 content,Type0的内容可透过repeater传送给大部分HDCP装置接收,而Type1的内容透过Repeater后,无法被下游HDCP 1.x、 2.x设备接收。 参考文献 Ÿ HDCPon HDMI Specification Rev2_3 作者 GRL 台湾技术工程师 李清宇 Peter Lee 国立成功大学材料系硕士毕业。两年 HDMI 测试经验,熟悉 HDMI2.1 与 HDCP 技术测试。GRL 技术文章作者及演讲讲师。
  • 热度 7
    2015-3-6 13:37
    3128 次阅读|
    0 个评论
    目前看到越来越多的趋势使用双通道HDCP解密/加密来做矩阵或视频处理器的输入输出板卡。 1、成本更优。 2、元器件数更少 3、支持OSD显示,提示相关信息。
  • 热度 26
    2013-11-22 09:41
    4677 次阅读|
    18 个评论
    理工男聊聊比特币的价值和投资 作者:林峰(从事芯片电子业,对技术和金融都有些兴趣) 如微博转载请 @IC电子业-林峰   最近比特币(Bitcoin)因为币值狂涨,弄得从事芯片行业的我也心痒痒是不是也去设计个挖矿芯片出来。 其实这挖矿芯片应该属于DSP芯片,有经验的团队大概半年时间可以弄得出来,但产业化的话就得和上下游配套,得花些工夫。我猜阿瓦隆芯片的“南瓜张博士”是某个科研院校的团队,有廉价的研究生资源,这加密芯片也是一个很好的研究课题。 话说回来,到底比特币是不是泡沫,有没有价值,很多人都弄不清楚。 网上的文章多是学文科的记者写的,云里雾里半天说不清楚。 我尝试从理工男的角度,说说我对比特币的理解。 首先,大家如果想对比特币理解更多的话,最好先百度扫盲一下,我这里就不详细说了。 推荐一篇文章: IT168上面的,作者:姚勇《易懂的BITCOIN算法详解------从做局角度思考比特币》 这文章写得很好,看完后对比特币的算法原理和概念应该就比较清楚了。   这比特币只是一串电脑算出来的字符,背后又没有国家和资源支持,它到底能成为货币么? 我们先简单理解一下货币的概念。 以美金举例,为什么一张绿色的纸能够全世界通行,可以用来交换到物质呢? 归根结底,就是大家对它有信心,认为它能够实现交换,所以它就有了价值。而对美金的信心来自哪里?当然是美国政府的强大背书了。 从这个概念来说,如果大家对比特币也有了信心,那它就算只是一串数字代码,也是可以成为货币的。   到目前为止,对比特币的价值认定非常两极化,一端是认为毫无价值,一端是认为因为币的数量有限,会和黄金一样值钱。 所以我们尝试讨论两个问题: 第一个问题:比特币到底有没有价值? 第二个问题:比特币到底价值多少?   第一个问题,从我的理解来说,我认为比特币是有价值的! 它最根本的价值就在于这一整套的数学模型和实现方法。 如果仔细看比特币的实现机制,你会发现它将全世界每次的交易单都存在每个人的电脑里,然后通过密钥去认证发布者和接收者。 比特币通过这种无中心式的分布存储和信息加密实现了可靠的交易和流通。 如果抛开比特币的货币概念去理解它,就会发现比特币实际上是一种信息认证流通方法。 它能够做到在没有权威,没有中心的情况下,确保信息在它的这套系统内的发布和流通的真实和准确性得到认证,这正是它最有价值的地方! 这套实现方法应该是可以在其它方面得到应用。任何群体性的消息传播认证都可以以类似的方法去实现。 比如说,如果比特币在将来得到各个国家的承认和支持,那它可以扮演一种中间货币的角色,简化国家间货币汇兑交易的程序。 其它的应用大家可以自己去想象。   第二个问题,比特币到底价值多少? 比特币到底价值多少呢? 我想这不可能有一个准确的答案,因为它可能会一直不停得变化,直到它消亡的一天。这里面有太多的非理性因素。 但是,如果从我第一个问题的回答来看,这种虚拟货币的价值从长远来说,它应该会归于一种工具的价值而不是货币的价值。 为什么这么说呢?因为比特币基于的这套数学模型和实现方法,是可以复制的。 简单来说,现在就已经出现了很多不同的虚拟货币,比如比较出名的莱特币(Litecoin),质数币(XPM)还有一些国产虚拟币比如龙币 (DragonCoin)、财富币(RichCoin)、银河币(GalaxyCoin),元宝币(YBCoin),屌丝币(DSCoin)、自由币(FreeCoin)、招财币(ZCCoin),熊 猫币(XMCoin)等等…… 因为,只需通过数学方法上的一点改动,就可以复制出不同的虚拟货币系统。 但唯一一点不能复制的,是对这种虚拟币的信心! 比特币因为先发优势,目前在虚拟币里面占据绝对优势和信心。 但这并不能排除其它的虚拟币来共同分享这个市场的可能。 除非得到某种权威的支持和认证,才能够保持它独占的地位,但这也正和它的去权威化概念相矛盾了。 换个角度想想,既然这个世界有美元和欧元,为什么虚拟币市场就不能有比特币和莱特币共存呢? 从这个角度来说,虚拟货币是有限数量的概念也就站不住脚了。   最后,比特币到底应不应该去投资呢? 我的回答很简单,因为这是一种虚拟货币,所以,只要你不去参与,那它不会对你和你的财富有任何影响。它没有利息也没有分红,只能通过高卖低买来盈利。 只要你一旦参与,你投入的钱就会进入一个财富再分配的池子。 比如说,你的钱会分配给早期进入这个系统的人,因为他们在建立这套系统的过程中做出了贡献,为早期建立交易提供了运算支持,挖了矿。 比如中国比特币大咖李笑来,他拥有很多比特币,你一旦投资进这个系统,你的钱就会有一部分分配给了他(前提是他抛售了比特币)。 当然,比你后期进入的人,又有可能将他的财富分配给你。 总结来说,虚拟货币的投资就是在一群人在一个池子里财富再分配的过程,赚和亏完全由你的进出时间的决定,你要自己承担这个风险。 注意这个投资和股票是不同的,好的股票至少每年会有些分红。 而且,建议你最好在和不同时区的伙伴建立合作关系,因为比特币交易市场是24小时运行的,如果你睡觉的时候,比特币跌了个50%,那你以后睡觉都不安稳了。     以上是本人对比特币的一点浅见,欢迎大家讨论! 欢迎加我的微信:  
  • 热度 4
    2012-11-9 10:23
    514 次阅读|
    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:13
    550 次阅读|
    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  
相关资源
广告