对DES中的第一个S盒子S1,计算随机变量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差
生活随笔
收集整理的這篇文章主要介紹了
对DES中的第一个S盒子S1,计算随机变量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對DES中的第一個S盒子S1,計算隨機變量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差
什么是偏差:
S盒是DES中連接Bi和Ci的橋梁:
每個Bi都是6bits,每個Ci都是4bits,S盒是一個6bits->4bits的代換。設S盒的輸入為X1~X6,S盒的輸出為Y1~Y4。
第一個S盒的結構:
代碼:
from fractions import Fraction # DES S盒1 list = [[14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7], [0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8], [4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0], [15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13]] print("Ci十進制 Ci二進制(Y1~Y4) 行 列 行二進制 列二進制 Bi二進制(X1~X6)") row=0 count=0 for i in list:row += 1row_binary = '{:02b}'.format(row-1)column = 0for j in i:column += 1column_binary = '{:04b}'.format(column-1)Yi = '{:04b}'.format(j) # Y1Y2Y3Y4Xi = row_binary[0]+column_binary+row_binary[1]print("%7s%13s (%2s,%2s)%7s%7s%11s"%(j,Yi,row,column,row_binary,column_binary,Xi))if (int(Xi[1])+int(Yi[0])+int(Yi[1])+int(Yi[2])+int(Yi[3]))%2==0:count+=1 print("\n對于DES中的第一個S盒子S1,隨機變量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差為:",Fraction(count,64)-Fraction(1,2))運行結果:
Ci十進制 Ci二進制(Y1~Y4) 行 列 行二進制 列二進制 Bi二進制(X1~X6)14 1110 ( 1, 1) 00 0000 0000004 0100 ( 1, 2) 00 0001 00001013 1101 ( 1, 3) 00 0010 0001001 0001 ( 1, 4) 00 0011 0001102 0010 ( 1, 5) 00 0100 00100015 1111 ( 1, 6) 00 0101 00101011 1011 ( 1, 7) 00 0110 0011008 1000 ( 1, 8) 00 0111 0011103 0011 ( 1, 9) 00 1000 01000010 1010 ( 1,10) 00 1001 0100106 0110 ( 1,11) 00 1010 01010012 1100 ( 1,12) 00 1011 0101105 0101 ( 1,13) 00 1100 0110009 1001 ( 1,14) 00 1101 0110100 0000 ( 1,15) 00 1110 0111007 0111 ( 1,16) 00 1111 0111100 0000 ( 2, 1) 01 0000 00000115 1111 ( 2, 2) 01 0001 0000117 0111 ( 2, 3) 01 0010 0001014 0100 ( 2, 4) 01 0011 00011114 1110 ( 2, 5) 01 0100 0010012 0010 ( 2, 6) 01 0101 00101113 1101 ( 2, 7) 01 0110 0011011 0001 ( 2, 8) 01 0111 00111110 1010 ( 2, 9) 01 1000 0100016 0110 ( 2,10) 01 1001 01001112 1100 ( 2,11) 01 1010 01010111 1011 ( 2,12) 01 1011 0101119 1001 ( 2,13) 01 1100 0110015 0101 ( 2,14) 01 1101 0110113 0011 ( 2,15) 01 1110 0111018 1000 ( 2,16) 01 1111 0111114 0100 ( 3, 1) 10 0000 1000001 0001 ( 3, 2) 10 0001 10001014 1110 ( 3, 3) 10 0010 1001008 1000 ( 3, 4) 10 0011 10011013 1101 ( 3, 5) 10 0100 1010006 0110 ( 3, 6) 10 0101 1010102 0010 ( 3, 7) 10 0110 10110011 1011 ( 3, 8) 10 0111 10111015 1111 ( 3, 9) 10 1000 11000012 1100 ( 3,10) 10 1001 1100109 1001 ( 3,11) 10 1010 1101007 0111 ( 3,12) 10 1011 1101103 0011 ( 3,13) 10 1100 11100010 1010 ( 3,14) 10 1101 1110105 0101 ( 3,15) 10 1110 1111000 0000 ( 3,16) 10 1111 11111015 1111 ( 4, 1) 11 0000 10000112 1100 ( 4, 2) 11 0001 1000118 1000 ( 4, 3) 11 0010 1001012 0010 ( 4, 4) 11 0011 1001114 0100 ( 4, 5) 11 0100 1010019 1001 ( 4, 6) 11 0101 1010111 0001 ( 4, 7) 11 0110 1011017 0111 ( 4, 8) 11 0111 1011115 0101 ( 4, 9) 11 1000 11000111 1011 ( 4,10) 11 1001 1100113 0011 ( 4,11) 11 1010 11010114 1110 ( 4,12) 11 1011 11011110 1010 ( 4,13) 11 1100 1110010 0000 ( 4,14) 11 1101 1110116 0110 ( 4,15) 11 1110 11110113 1101 ( 4,16) 11 1111 111111對于DES中的第一個S盒子S1,隨機變量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差為: -9/32對于DES中的第一個S盒子S1,隨機變量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差為: -9/32
總結
以上是生活随笔為你收集整理的对DES中的第一个S盒子S1,计算随机变量 X2⊕Y1⊕Y2⊕Y3⊕Y4 的偏差的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FTP主动模式和被动模式讲解
- 下一篇: 30岁软件测试,目前已失业4个月,迷茫不