先声明两个基本概念
代换(substitution),用别的元素代替服务器托管网当前元素。des的s-box遵循这一设计。
abc–>def
置换(permutation),只改变元素的排列顺序。des的p-box遵循这一设计。
abc–>bac
**本文并未介绍初始置换(In服务器托管网itial Permutation)和初始置换的逆置换。这两个置换并不提供任何密码学意义。
DES最核心的算法就是feistel结构的16轮加密 。
该结构以工作在IBM的德国密码研究员Horst Feistel的名字命名。其中涉及轮函数F,和每一轮的子密钥K。
明文数据分成左右各32bit,记为LE,RE。
feistel结构的可逆性:
F函数内部:
依次经过:
-
扩展置换(Expansion Permutation):将输入的32位数据扩展为48位。这个步骤的目的是引入更多的比特位,并增加数据的混淆性。
-
子密钥混合(Key Mixing):将48位的扩展数据与轮密钥进行异或运算。每一轮DES使用的子密钥都是从主密钥生成的。通过将扩展数据与轮密钥混合,增加了密钥的影响力,增强了密码算法的安全性。
-
S盒替换(Substitution Box):8个不同的s盒(s1-s8),每个盒将6bit数据进行非线性替换,输出4位bit数据。S盒的作用是混淆数据,增加密码算法的复杂性和非线性性。S盒是DES中唯一的非线性元件,也是算法强度核心。其设计准则考虑了对抗差分攻击,线性攻击。
**线性:F(x1 xor x2)=F(x1) xor F(x2),xor为异或。
**此处以s1为例,盒内每一行是对0-15的一种置换。
4.P盒置换(Permutation Box):对经过S盒替换的数据进行固定的置换操作。这个步骤的目的是重新排列数据位,加强密码算法的混淆性和扩散性。
子密钥K的生成方法:
标准的DES要求密钥为64bit,但是每8位中最后一位为奇偶校验位,不参与真正的加密。
pc–permutation choice,也是带的p-box
经过pc1盒—-舍弃奇偶校验位(共8bit,剩下56bit)并置换。
记56bit的左28bit为C0,右28bit为D0。C0,D0两部分独立进行循环左移,左移的位数根据当前的加密轮次不同。
合并为56bit再经过pc2盒,压缩置换(舍弃第9,18,22,25,35,38,43,54位),即可生成当前轮次的48bit子密钥。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 写不好Prompt?可以先写个粗糙版本,然后让GPT帮助优化。
我们以学习“如何写好Prompt”为例看优化过程。 1、第一个粗糙版本 首先,我们写一个粗糙版本后问GPT4: 你是ChatGPT最优秀的Prompt engineering,帮我优化以下Prompt,从而获得最好的建议结果: “`我想学习如何写好Promp…