该密钥名义上存储或传输为8个字节,每个字节具有奇数奇偶校验。根据ANSI X3.92-1981 (现称ANSI INCITS 92-1981),第3.5节:密钥的每个8位字节中的一个位可用于密钥生成、分配和存储中的错误检测。第8、16、.、64位用于确保每个字节具有奇偶校验。
据我所知,维基百科的文本,在DES的每一个字节中,基本上只有6位,因为第七位是由奇偶决定的。这是否意味着DES实际上只有2^48个可能的密钥(8个奇偶校验位,8个由于奇偶校验而确定的密钥和48个随机密钥)?
发布于 2019-05-22 03:59:38
不你不对。用于“错误检测”的每个字节中的位是奇偶校验位。注意,位通常被奇怪地计算,对于第一个最左边的位--通常是最重要的位--使用偏移量为1而不是0。
因此,如果您有一个字节数组,那么每个字节中每一个最不重要的位都是奇偶校验位。此位的设置方式使每个字节在操作后设置了奇数位数。换句话说,如果其他比特的计数是偶数,则设置它,如果没有,则设置未设置。或者,如果所有0位或1位的数量相等,就会翻转--这相当于相同的东西。
因此,假设您有以下单个DES键:
pos: 1234 5678 9 .. etc. .... .... .... .... .... .... .... .... .... .... .... ....
bin: 0000_0000 0000_0001 0000_0010 0000_0011 0000_0100 0000_0101 0000_0110 0000_0111
hex: 0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7
1's: 0 1 1 2 1 2 2 3结果是,在奇偶校验调整之后:
pos: 1234 5678 9 .. etc. .... ...P .... ...P .... ...P .... ...P .... ...P .... ...P
bin: 0000_0001 0000_0001 0000_0010 0000_0010 0000_0100 0000_0100 0000_0111 0000_0111
hex: 0 1 0 1 0 2 0 2 0 4 0 4 0 7 0 7
1's: 1 1 1 1 1 1 3 3因此,由于有8个字节,每个字节中有一个用于奇偶校验,每个字节有7位用于密码本身。有64 /8=8字节,每个字节7位,8*7= 56位有效密钥大小。
奇偶校验调整和验证取决于库,但通常需要至少显示8个完整字节/ 64位。
https://crypto.stackexchange.com/questions/70736
复制相似问题