有二进制数A=11001101,B=10111110进行加法运算?

密码学以及应用:几本重要的参考教材

1、现代密码学及应用(理查德E布拉胡特)

4、深入浅出密码学 常用加密技术原理与应用

代码参考:;同时非常感谢这位博主

(1)des是一种将64位(8字节)明文加密成64比特密文的对称加密算法,实际密钥的长度是56比特,但是从规格上来说,des的密钥长度是64比特(8字节),每隔7比特设置一个校验比特(也就是第8,16,24,32,40,48,56,64位);

(2)des是一种分组加密,分组加密也是大部分加密算法和基本操作,没有什么好说的,就是每次8个字节明文进去,8个字节密文出来;

(3)分组加密的迭代称为加密模式,几乎大部分加密方式通用

(4)des的基本结构是有Feistel设计的,因此也称为feistel结构或者feistel密码;feistel加密的各个步骤称为轮,整个加密过程就是进行若干次轮的循环,des是一种16轮循环的feistel网络;

2、feistel处理(后续加密的主体)

把64比特数据分为两组,右边32位不做处理,作为下一轮的右边,左边的需要进行异或,异或的对象是:右边32位经过轮函数处理之后的数据(还是32位);异或后放在下一轮左侧;

中间的子密钥是本轮加密所使用的密钥,也就是说每一轮所需要的子密钥不同,这些子密钥都是原始密钥生成的;

①将输入数据(64位)分成左右两部分

②右侧直接发送到输出的右侧

③将输入的右侧发送到轮函数

④轮函数根据右侧的数据和子密钥,计算一组值

⑤左侧数据异或发送到左侧的输出

此时我们发现右侧数据没有发生变化,所以需要继续轮计算;

如上图所示就是进行了3轮的示意图;第一轮加密的左侧变成了右侧,原来明文的右侧放到了左侧;也就说奇数轮对左侧加密,偶数轮对右侧加密;

(1)明文初始置换----》(2)密钥初始置换---》(3)生成16个48位的子密钥----》(4)明文拓展置换---》(5)S盒替换---》(6)P盒替换---》(7)末置换

*IP_Table是给出的固定的置换表

IP初始置换是固定好的,置换表也是固定的,这个过程其实不用过多的在意,就是根据表格改变明文的顺序;是由IBM公司给出的表固定好的;

(3)生成16个48位的子密钥(为什么是48位呢???不应该是32位吗?)

56位的密钥经过置换选择2后为什么变成48位呢???

拓展置换,s盒,p盒可以统一在f函数实现;

明文置换之后,分为L和R;L=f(R)^ L;

我们要做的就是实现f(R),传入32位的数组,传出32位数组;

}最后处理需要再次置换得到密文 *最后得到的message_bit[64]会存在不可打印字符,如何转换成16进制打印呢?

拓展置换如何拓展到48位呢??因为子密钥是48位的;

拓展置换E,变成8个S盒,每个S盒有6个比特;每个S盒最后变成4位,再经过P运算变成32位

和加密函数对比一下有什么区别??

最后附上完整代码:来自

}

我要回帖

更多关于 111001减10010二进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信