DES算法S盒学习

news/2024/11/21 1:29:30/

在密码学中,S盒(Substitution-box)是对称密钥算法执行置换计算的基本结构。
S盒用在分组密码算法中,是唯一的非线性结构。

 

S盒是将48比特压缩成32比特,S盒接受特定数量的输入48比特,经过8个盒将其转换为32比特输出。

在DES算法中替代由8个不同的S盒完成,每个S盒有6位输入4位输出。

一个S盒就是一个4行16列的表,盒中的每一项都是一个4位二进制数表示的十进制数。
输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据。
S盒的行列计数都是从0开始。

例如,S1盒如下;
S1盒
0    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15
0    14    4    13    1    2    15    11    8    3    10    6    12    5    9    0    7
1    0    15    7    4    14    2    13    1    10    6    12    11    9    5    3    8
2    4    1    14    8    13    6    2    11    15    12    9    7    3    10    5    0
3    15    12    8    2    4    9    1    7    5    11    3    14    10    0    6    13


以s8盒为例,输入110011,
第一位和第六位(最高位和最低位)组合为11(二进制),转换为十进制为3,则在s8盒中行号为3;
接下来计算列,原始数据第二位到第五位为1001(二进制),转换为十进制为9,则在s8盒中列号为9;
s盒8的03行09列的数字为12,转换为二进制为1100,因此用二进制1100来代替110011;

 

S盒代替是DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的,相比于其他步骤,提供了更好安全性。


http://www.ppmy.cn/news/491191.html

相关文章

K8s集群重新初始化

学习来源: 51cto: https://edu.51cto.com/sd/518e5 腾讯课堂: https://ke.qq.com/course/2738602 K8s集群环境搭建:https://blog.csdn.net/qq_26900081/article/details/109291999 学习过程中一不小心把K8s给折腾坏了&am…

PHP -S 命令

从php5.4开始,引入了一个内置web服务器,可以在测试环境迅速搭建web环境而无须复杂的配置。性能肯定是不如nginx和apache服务器的,生成环境还是要搭建服务器。 1-命令使用方法: php -S 0.0.0.0:99 当然的其前提是进入到项目的相…

海思开发:yolo v5s :pytorch->onnx->caffe->nnie

一、前言 主要是遇见几个问题,赶紧记录一下,免得后面兄弟们吃同样的亏,也帮助自己记忆。附上我的 yolo v5 后处理部分 c 语言版本代码:C版 yolo v5s 后处理部分 二、转换报错 1. 报错: Reshape dimention number shall be 2 or…

K8s 端口映射

原文链接 https://www.jianshu.com/p/8275f2031c83 1. nodePort 外部流量访问k8s集群中service入口的一种方式(另一种方式是LoadBalancer),即nodeIP:nodePort是提供给外部流量访问k8s集群中service的入口。比如外部用户要访问k8s集群中的一…

windows本地安装K8S

一、安装docker desktop windows 安装k8s , 首先需要安装docker,一般我们是安装docker desktop, Windows版的Docker Desktop 是社区版本,您可以从Docker Hub上直接下载,下载链接如下: Docker Hub 系统…

宋茜 许魏洲 生来倔强 高音质伴奏

宋茜 许魏洲 生来倔强 高音质伴奏

ts重点学习86-map类型笔记

export default {}// 创建 let nameSiteMapping new Map();// 设置 nameSiteMapping.set("邱淑贞", 1); nameSiteMapping.set("宋茜", 2); nameSiteMapping.set("景甜", 3);// 获取键队友的值 // console.log(nameSiteMapping.get("景甜&q…

使用java中Scanner,Randon,ArrayList完成一个随机点名系统

import java.util.*;public class Test01 {public static void main(String[] args) {//使用Arrays.asList创建一个固定数组List<String> list Arrays.asList("孙俪", "刘涛", "苗圃", "杨紫","蒋欣","乔欣&quo…