matlab Spongent算法

1、内容简介


5-可以交流、咨询、答疑

2、内容说明

Spongent 是一种轻量级 Hash 算法,其原理与“海绵”类似,分为“吸收”
和“榨取”两个阶段,所以又可以称之为“海绵结构”算法。
Hash 函数之所以有广泛的应用,是因为它具有以下几个性质:
(1)单向性,对于任意的 Hash 码 h,找到能使 H(x)=h 成立的 x 在计算上是
不可行的。
(2)抗弱碰撞性,对于任意的 x,找到能使 H(x)=H(y)成立的 y 在计算上是不
可行的。
(3)抗强碰撞性,对于任意指定的 Hash 算法,想找到不同的输入得到相同的
输出是不可行的。
下面简单的介绍一下 Spongent 算法的原理。
Spongent 算法是 Bogdanov 等人在 CHES 2011 上提出的轻量级 Hash 函数。
Spongent 算法用 Spongent-n/c/r 表示,是由迭代函数 Spongent- ߨ ܾ 、比特率 r、
容量 c、轮数 R 等组成的海绵结构的算法。给定有限数量的输入位,它将产
生一个 n 位的哈希值。在 Spongent- ߨ ܾ 中,b 作为置换位的宽度,即 state 结
构的容量,b=c+r。Spongent 算法的加密步骤如图 1 所示
从图中可以看出 Spongent 算法的“吸收”和“榨取”过程。具体加密步骤
及各模块内部结构及运算方法如下:
1、初始化阶段:
该输入数据将由一个单一的位 1 填充,后跟必要数量的 0 位,位数
直 到 达 到 r 位 的 倍 数 ( 例 如 , 如 果 r=8, 则 1 位 消 息 “0”将 转 换 为
“01000000”)。然后将其切成 r 位的块。简单举例来说,如果 r=8,而
有一个输入数据是 10 位,那么在此数位最右边补上一个单一的 1 后,
用 0 来将其填充至 r=8 的最小倍数数位 16。因为 r=8,所以位数为 16
的数据不能一次性输入(为什么不能一次性输入后面详谈),应该分为
数据块依次输入。因为是 8 的整倍数,所以将其分为 p=16/8=2 数据块
来进行输入。其他位数的数据同样是这种处理方法。简单来说就是,令
|m|为经过填充处理的数据 m 的长度,则 p=|m|/r。
2、吸收阶段:
如图 1 所示,比特率 r 和容量 c 初始数据都为 0,图 1 中所示的 ݉ ͳ ݉ ʹ ǥ
݉ ݅ 为初始化阶段中对处理后的输入数据 m 分块处理后的结果,例如初始化阶段所
举例子经过填充处理位数为 16 的数据经过分块处理后,分为了两个数据块,那
么位数为 16 的数据在输入阶段就对应着 ݉ ͳ ݉ ʹ 两段输入,以此类推。如图 1
所示,很清楚的可以知道,被分块后 ݉ ͳ 首先与状态值(state)的前 r 位的值进
行异或运算(state 的位数为 b,而 b=r+c,此处前 r 位的值为 0,前面举例 r=8
是指 r 的位数为 8,而 r 的初值都是 0,如果说 r=8,就是指 r 为 8 位的全 0 数
据,即“00000000”),而后 c 位的值不与 ݉ ͳ 进行异或运算,如图 1 所示,经过
异或运算后 b 位的新状态值(state)被送入 ߨ ܾ 中进行运算( ߨ ܾ 中的运算很复杂, 后面进行讲解),得出运算过后的新 b 位状态值,同样,重复前一个步骤,因为
的分得的数据块的位数相同都是 r 位,再将新的状态值的前 r 位与数据块第二块
݉ ʹ 进行异或运算,后 c 位仍然不参加运算,得到的新状态值后再送入下一个 ߨ ܾ
中(注:在 n/c/r 都相同的一个 Spongent 算法中,每一个 ߨ ܾ 中的运算都是不一
样的,并不是相同的,不过他们的运算轮数都是一样的,后面会在对 Spongent- ߨ ܾ
的介绍中提到),以此类推,直到将 m 所分的块全部都进行输入完为止,即若分
块为 ݉ ͳ ݉ ʹ ǥ ݉ ݅ ,则一直到 ݉ ݅ 输入并进行运算后,吸收阶段才会结束,如
图 1 所示。
3、榨取阶段:
如图 1 所示,榨取阶段的原理其实和吸收阶段的原理近似相同,对数据进行
置换的函数依旧是 Spongent- ߨ ܾ ,只不过没有吸收阶段的异或过程,榨取阶段的
第一个输入为吸收阶段的最后一个置换函数 ߨ ܾ 的输出,因为吸收与榨取阶段的置
换函数类型相同(内部运算不同),所以其输入输出都是 b 位的状态值,榨取阶段
每次 ߨ ܾ 输出 b 位状态值,取其前 r 位作为输出 ݄ ݅ ,同时将此次置换函数输出的 b
位状态值作为下一个置换函数 ߨ ܾ 的输入,以此类推。对于不同的 Spongent 算法
类型,榨取阶段输出 r 位的组数也不同,已知 Spongent-n/c/r 中的 n 为算法的
最终输出数据的位数,所以需要 j=|n|/|r|组置换函数的输出。例如,对于
Spongent-88/80/8 来说,r=8,n=88,则榨取阶段应该输出 j=|n|/|r|=88/8=11
个 r=8 比特的数据组再将每一次的输出 ݄ ͳ ݄ ʹ ǥ ݄ ͳ ͳ 整合为 n=88 位的输出数
据,如图

3、仿真分析

4、参考论文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/171760.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库#6

Python操作mysql 在使用Python连接mysql之前我们需要先下载一个第三方的模块 pymysql的模块,导入后再进行操作。 操作步骤:1. 先连接mysql host,port,charset,username password 库,等等。 import pymysql…

如何恢复u盘删除文件?2023最新分享四种方法恢复文件

U盘上删除的文件怎么恢复?使用U盘存储文件是非常方便的,例如:在办公的时候,会使用U盘来存储网络上查找到的资料、产品说明等。在学习的时候,会使用U盘来存储教育机构分享的教学视频、重点知识等。而随着U盘存储文件的概…

综合OA管理系统源码 OA系统源码

综合OA管理系统源码 OA系统源码 功能介绍: 编号:LQ10 一:系统管理 系统配置,功能模块,功能节点,权限角色,操作日志,备份数据,还原数据 二:基础数据 审批…

ExoPlayer架构详解与源码分析(7)——SampleQueue

系列文章目录 ExoPlayer架构详解与源码分析(1)——前言 ExoPlayer架构详解与源码分析(2)——Player ExoPlayer架构详解与源码分析(3)——Timeline ExoPlayer架构详解与源码分析(4)—…

Project Costs

/*** 初始化象棋的棋子,正常情况加载双方所有棋子,残局演示加载剩余棋子,按坐标位置摆放* * 【费用】* 因甲方要求产生工作量计算费用;新增、修改、删除需求* 因乙方生产缺陷工作量不计费用;缺陷、延误* * 来说个一个栗…

5 个编写高效 Makefile 文件的最佳实践

在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动化构建、编译、测试和部署。然而,编写高效的Makefile文件并不是一件容易的事情。在本文中,我们将讨论如何编写高效的Makefile文件,以提高我们的开发…

unocss和tailwindcss css原子引擎

第一种tailwindcss: tailwindcss官网 https://tailwindcss.com/docs/grid-column 基本介绍及优点分析 Tailwind CSS 中文文档 - 无需离开您的HTML,即可快速建立现代网站 PostCss 处理 Tailwind Css 基本流程 PostCSS - 是一个用 JavaScript 工具和插…

Postman —— 配置环境变量

PostMan是一套比较方便的接口测试工具,但我们在使用过程中,可能会出现创建了API请求,但API的URL会随着服务器IP地址的变化而改变。 这样的情况下,如果每一个API都重新修改URL的话那将是非常的麻烦,所以PostMan中也提供…

使用ControlNet生成视频(Pose2Pose)

目录 ControlNet 介绍 ControlNet 14种模型分别是用来做什么的 ControlNet 运行环境搭建 用到的相关模型地址 ControlNet 介绍 ControlNet 是一种用于控制扩散模型的神经网络结构,可以通过添加额外的条件来实现对图像生成的控制。它通过将神经网络块的权重复制到…

从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 一…

【tio-websocket】9、服务配置与维护—TioConfig

场景 我们在写 TCP Server 时,都会先选好一个端口以监听客户端连接,再创建N组线程池来执行相关的任务,譬如发送消息、解码数据包、处理数据包等任务,还要维护客户端连接的各种数据,为了和业务互动,还要把这些客户端连接和各种业务数据绑定起来,譬如把某个客户端绑定到一…

【shell】pis_monitor.sh

#!/bin/bashread -p "请输入要查询的PID:" pidecho "--------------------------------"echo "进程PID:$pid"p_arr("进程命令 11" "进程所属用户 1" "CPU占用率 2" "CPU内存占用率 4" "进程开始运…

深入浅出排序算法之简单选择排序

目录 1. 原理和执行流程 2. 代码实现 3. 性能分析 4. 双向选择排序(了解) 1. 原理和执行流程 选择排序包含了堆排序和简单选择排序。 每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后&#xff0…

Unity URP14.0 自定义后处理框架

目录 碎碎念一些基础CustomPostProcessing.csCustomPostProcessingFeature.csCustomPostProcessingPass.cs例子:BSC后处理shader(BSC)后处理cs脚本(BSC) 例子:ColorBlitPostProcessing.hlslColorBlit2.shaderColorBlit.cs文件 其他…

ab压力测试

标题相关概念 QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 互联网中,作为域名系统服务器的机…

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh

时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库…

亿图导出word和PDF中清晰度保留方法

步骤一 在亿图软件中画一个元件大小搭配合理的图。注意字体大小的安排,尤其是角标的大小要合适,示范如下 选中所有元器件,右键使用组合功能将电路图组合为一个整体 步骤二: 将亿图软件中的图保存为SVG格式。示范如下 在导出到…

Mybatis-Plus(企业实际开发应用)

一、Mybatis-Plus简介 MyBatis-Plus是MyBatis框架的一个增强工具,可以简化持久层代码开发MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官网&a…

人工智能基础_机器学习003_有监督机器学习_sklearn中线性方程和正规方程的计算_使用sklearn解算八元一次方程---人工智能工作笔记0042

然后我们再来看看,如何使用sklearn,来进行正规方程的运算,当然这里 首先要安装sklearn,这里如何安装sklearn就不说了,自己查一下 首先我们还是来计算前面的八元一次方程的解,但是这次我们不用np.linalg.solve这个 解线性方程的方式,也不用 直接 解正规方程的方式: 也就是上面…