对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 的偏差相关推荐
- 根据坐标如何在matlab中l连成曲线,matlab中,如何将两条曲线画在一个坐标系里,plot(x1,x2,y1,y2)还是怎样...
matlab中,如何将两条曲线画在一个坐标系里,plot(x1,x2,y1,y2)还是怎样以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快 ...
- 对于DES的S盒 计算随机变量的偏差
题目 对于DES的S1,计算下列随机变量的偏差 X 2 ⨁ Y 1 ⨁ Y 2 ⨁ Y 3 ⨁ Y 4 {X_2}\bigoplus{Y_1}\bigoplus{Y_2}\bigoplus{Y_3}\ ...
- java定义一个盒子类box_定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height(...
定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height( 定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和 ...
- Java中实现DES加解密的一个类
//转byte应该要指定编码方式(不然可能会出错) //PASSWORD_CRYPT_KEY需要为八位字节 package com.global.util;import java.io.Unsuppo ...
- python动画精灵梦叶罗丽_精灵梦叶罗丽中出现过多少宝石盒子?灵犀阁的盒子造型最罕见...
精灵梦叶罗丽第八季已经进入了暑期档的正式播出,不过每当想起要等待一周的时间才能看到下一集,也是有些心塞啊,所以说大家可以利用闲暇的时间回顾一下剧情,在细节中发现里面的一些有趣又好看好玩的事情或者是好看 ...
- vue中,获取一个div的高赋值给另一个div (自适应)
vue中,获取一个div的高赋值给另一个div (自适应) 问题描述: 左侧是video 为了让video不出现黑边 video是16:9的(怎么写成16:9的盒子 下次说), 左侧的高度会随着页面宽 ...
- vue中手写一个放大镜功能
vue中手写一个放大镜功能 有的时候需要对图片进行放大,类似于电商的商品放大功能,于是在这个想法上写了一个放大镜的功能,并且在放大镜的基础上新添加了一些小功能,下面开始吧! 放大镜是封装的组件的形式, ...
- javascript案例_如何在JavaScript中使用增强现实-一个案例研究
javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...
- Spring 如何在一个事务中开启另一个事务?
Spring项目,需要在一个事务中开启另一个事务. 上面提到的情景可能不常见,但是还是会有的,一旦遇到,如果业务比较复杂,就会很麻烦,但是还是有解决的方案的,比如将一个service方法拆成两个方法, ...
最新文章
- 在Ubuntu 14.04和CentOS上安装boost1.55二进制包
- 协同工作流引擎,开启流程优化新纪元
- 文巾解题 面试题 03.06. 动物收容所
- Special Numbers 进制(1100)
- python legend位置_关于matplotlib-legend 位置属性 loc 使用说明
- 安卓手机运行ios教程_英雄联盟手游傻瓜安装教程,IOS/安卓双端可用!
- mcq 队列_MCQ | 量子密码学
- linux系统平均价格,简单认识Linux系统平均负载
- Data Binding 使用教程一
- 一次性输血器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 免费录屏、最快截图、装X必备、看完工作学习效率直接翻倍
- Ajax学习笔记-get请求参数-3
- arcgis里面如何删除标记_ArcGIS技术篇——标记符号制作
- 【STM32】两轮自平衡小车学习笔记2
- 什么是监控报警以及如何实现,超详细讲解
- 10万字公安大数据平台建设项目方案
- 分享一套永久免费的ChatGPT使用方法
- 使用CUPS打印服务
- 想要搭建自己的云主机可以怎么做
- 反演产品的精度和空间分辨率
热门文章
- uniapp 播放视频
- 云计算架构自己的理解
- 新东方雅思词汇---6.2、重音在词根上,不在前后缀(名词除外)
- 台达服务器电源性能怎么样,台达电源怎么样?该怎么选择台达电源?
- 3D Touch介绍:电子秤App与快捷操作
- LINUX FTP用户的创建
- 为什么说冯诺依曼结构是现代计算机的基础,为什么现代计算机被称为冯·诺依曼结构计算机??...
- 读书笔记《底层逻辑2·理解商业世界的本质》
- Octave4.4.1-64位下载
- 获取当前所在地的天气