当前位置: 首页 > news >正文

CTF-RE 从0到N: S盒

S盒(Substitution Box) 是密码学中的一种替换表,用于对输入数据进行非线性变换,以增加加密过程的复杂性。它主要用于对称加密算法中(例如AES、DES),作为加密轮次的一部分,对输入字节进行混淆,使明文与密文之间的关系更加复杂,从而提升安全性。

示例:AES S盒

AES(高级加密标准)中的S盒基于有限域的数学变换构建,输入为8位数据,输出也是8位数据。AES S盒在加密过程中被频繁查表使用。

以下是AES S盒的一个示例代码,用于演示如何将一个字节数据通过S盒进行替换。

# AES S盒的定义(部分数据示例)
AES_S_BOX = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,# ... (中间数据省略)0xbb, 0x16
]# 定义S盒替换函数
def s_box_substitute(byte):"""使用AES S盒对单个字节进行替换。:param byte: 0-255范围内的一个字节数据:return: 替换后的字节"""if not (0 <= byte <= 255):raise ValueError("输入字节必须在0到255之间")return AES_S_BOX[byte]# 测试
input_byte = 0x3c  # 输入字节示例
output_byte = s_box_substitute(input_byte)
print(f"S盒替换结果: 输入字节=0x{input_byte:02x}, 输出字节=0x{output_byte:02x}")

代码说明

  1. AES_S_BOX:这是一个含有256个元素的列表(这里仅部分列出)。每个索引对应一个8位输入值(0-255),每个元素是一个8位输出值。
  2. s_box_substitute函数:该函数接收一个字节(0-255的整数),查找AES S盒,返回替换后的值。
  3. 示例运行:输入0x3c(十进制60),通过S盒替换得到输出字节。

输出示例

S盒替换结果: 输入字节=0x3c, 输出字节=0x42

在AES加密中,这个S盒查找过程会对每个字节进行替换操作,通过逐轮的S盒操作实现复杂的混淆,进而提高算法的安全性。

相关文章:

CTF-RE 从0到N: S盒

S盒&#xff08;Substitution Box&#xff09; 是密码学中的一种替换表&#xff0c;用于对输入数据进行非线性变换&#xff0c;以增加加密过程的复杂性。它主要用于对称加密算法中&#xff08;例如AES、DES&#xff09;&#xff0c;作为加密轮次的一部分&#xff0c;对输入字节…...

MT-Pref数据集:包含18种语言的18k实例,涵盖多个领域。实验表明它能有效提升Tower模型在WMT23和FLORES基准测试中的翻译质量。

2024-10-10&#xff0c;由电信研究所、里斯本大学等联合创建MT-Pref数据集&#xff0c;它包含18种语言方向的18k实例&#xff0c;覆盖了2022年后的多个领域文本。通过在WMT23和FLORES基准测试上的实验&#xff0c;我们展示了使用MT-Pref数据集对Tower模型进行对齐可以显著提高翻…...

【C++ 真题】B2099 矩阵交换行

矩阵交换行 题目描述 给定一个 5 5 5 \times 5 55 的矩阵(数学上&#xff0c;一个 r c r \times c rc 的矩阵是一个由 r r r 行 c c c 列元素排列成的矩形阵列)&#xff0c;将第 n n n 行和第 m m m 行交换&#xff0c;输出交换后的结果。 输入格式 输入共 6 6 6 …...

AAPL: Adding Attributes to Prompt Learning for Vision-Language Models

文章汇总 当前的问题 1.元标记未能捕获分类的关键语义特征 如下图(a)所示&#xff0c; π \pi π在类聚类方面没有显示出很大的差异&#xff0c;这表明元标记 π \pi π未能捕获分类的关键语义特征。我们进行简单的数据增强后&#xff0c;如图(b)所示&#xff0c;效果也是如…...

MySQLDBA修炼之道-开发篇(一)

三、开发基础 1. 数据模型 1.1 关系数据模型介绍 关于NULL 如果某个字段的值是未知的或未定义的&#xff0c;数据库会提供一个特殊的值NULL来表示。NULL值很特殊&#xff0c;在关系数据库中应该小心处理。例如查询语句“select*from employee where 绩效得分<85 or>绩…...

Spring MVC 知识点全解析

Spring MVC 知识点全解析 Spring MVC 是一个基于 Java 的请求驱动的 Web 框架&#xff0c;属于 Spring 框架的一部分&#xff0c;广泛用于构建企业级 Web 应用程序。本文将详细阐述 Spring MVC 的核心知识点&#xff0c;包括其工作原理、关键组件、配置、请求处理、数据绑定、…...

python 基于FastAPI实现一个简易的在线用户统计 服务

简易在线用户统计服务 概述 这是一个基于Python的FastAPI框架实现的服务&#xff0c;用于统计客户端的心跳信息&#xff0c;并据此维护在线用户列表以及记录活跃用户数。 功能特性 心跳接收&#xff1a;接受来自客户端的心跳包&#xff0c;以更新客户端的状态。在线用户统计…...

glibc中xdr的一个bug

本人在64位linux服务器上(centos7)&#xff0c;发现xdr_u_long这个函数有个bug&#xff0c;就是数字的范围如果超过unsigned int的最大值(4294967295)时&#xff0c;xdr_u_long失败。 这个场景主要用在unix时间戳上面&#xff0c;比如一款软件&#xff0c;设置有效期为100年。…...

Android Framework定制sim卡插入解锁pin码的界面

文章目录 手机设置SIM卡pin码一、安卓手机二、苹果手机 Android Framework中SIM卡pin码代码定位pin码提示文本位置定位pin码java代码位置 定制pin码framework窗口数字按钮 手机设置SIM卡pin码 设置 SIM 卡 PIN 码可以提高手机的安全性&#xff0c;防止他人在未经授权的情况下使…...

cc2530 Basic RF 讲解 和点灯讲解(1_1)

1. Basic RF 概述 Basic RF 是 TI 提供的一套简化版的无线通信协议栈&#xff0c;旨在帮助开发者快速搭建无线通信系统。它基于 IEEE 802.15.4 标准的数据包收发&#xff0c;但只用于演示无线设备数据传输的基本方法&#xff0c;不包含完整功能的协议。Basic RF 的功能限制包括…...

Android H5页面性能分析策略

文章目录 引言一、拦截资源加载请求以优化性能二、通过JavaScript代码监控资源下载速度三、使用vConsole进行前端性能调试四、使用Chrome DevTools调试Android端五、通过抓包分析优化网络性能六、总结 引言 在移动应用开发中&#xff0c;H5页面的性能直接影响到用户体验。本文…...

【前端面试】Typescript

Typescript面试题目回答 Typescript有哪些常用类型? Typescript的常用类型包括&#xff1a; 基本类型&#xff1a;boolean&#xff08;布尔类型&#xff09;、number&#xff08;数字类型&#xff09;、string&#xff08;字符串类型&#xff09;。特殊类型&#xff1a;nul…...

程序语言的内存管理:垃圾回收GC(Java)、手动管理(C语言)与所有权机制(Rust)(手动内存管理、手动管理内存)

文章目录 程序语言的内存管理&#xff1a;垃圾回收、手动管理与所有权机制引言一、垃圾回收机制&#xff08;GC&#xff09;&#xff08;Java&#xff09;1. 什么是垃圾回收机制2. 垃圾回收的工作原理3. 优点与缺点4. 示例代码 二、手动管理内存的分配和释放&#xff08;C语言&…...

研究生论文学习记录

文献检索 检索论文的网站 知网&#xff1a;找论文&#xff0c;寻找创新点paperswithcode &#xff1a;这个网站可以直接找到源代码 直接再谷歌学术搜索 格式&#xff1a;”期刊名称“ 关键词 在谷歌学术搜索特定期刊的关键词相关论文&#xff0c;可以使用以下几种方法&#…...

毕业设计选题:基于Django+Vue的图书馆管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 图书馆界面 图书信息界面 个人中心界面 后台登录界面 管理员功能界面 用户…...

#网络安全#NGSOC与传统SOC的区别

NGSOC是Next Generation Security Operation Center&#xff08;下一代安全运营中心&#xff09;的缩写。 NGSOC安全运营服务基于态势感知与安全运营平台来开展监测分析等一系列的服务工作&#xff0c;旨在通过专业、高效的运营服务工作&#xff0c;帮助用户尽可能发挥NGSOC作…...

GCN+BiLSTM多特征输入时间序列预测(Pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GCNBiLSTM多特征输入时间序列预测&#xff08;Pytorch&#xff09; 可以做风电预测&#xff0c;光伏预测&#xff0c;寿命预测&#xff0c;浓度预测等。 Python代码&#xff0c;基于Pytorch编写 1.多特征输入单步预测…...

LinkedList和链表之刷题课(下)

1. 给定x根据x把链表分割,大的结点放在x后面,小的结点放在x前面 题目解析: 注意此时的pHead就是head(头节点的意思) 基本上就是给定一个链表,我们根据x的值来把这个链表分成俩部分,大的那部分放在x后面,小的那部分放在x前面,并且我们不能改变链表本来的顺序,比如下面的链表,我…...

ollama 在 Linux 环境的安装

ollama 在 Linux 环境的安装 介绍 他的存在在我看来跟 docker 的很是相似&#xff0c;他把市面上已经存在的大语言模型集合在一个仓库中&#xff0c;然后通过 ollama 的方式来管理这些大语言模型 下载 # 可以直接通过 http 的方式吧对应的 shell 脚本下载下来&#xff0c;然…...

C语言二刷指针篇

&取得变量的地址 printf("%p\n", &a); printf("%p\n", a); printf("%p\n", &a[0]); printf("%p\n", &a[1]); 前三个输出相同&#xff0c;a[0]和a[1]之间相差4 指针就是保存地址的变量&#xff0c;指针里放的是别的…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...