aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程

本发明涉及一种用于分组加解密算法的子密钥的生成方法。

背景技术:

随着信息技术的发展,信息安全性的问题却愈来愈显得突出,保证信息安全的一个重要技术就是密码学。密码学在信息安全技术中扮演着基础的角色,是攻击者最难攻破的模块。而分组密码又是密码学中最常用的算法,是信息安全中的主力,通常称为信息安全中的驿马。目前学术界对分组密码的设计和研究已经相当成熟,每年都有很多新的加密算法推出。由于硬件速度的提高以及计算机内存的逐步增大,人们发现传统的加密算法会带来越来越多的问题,因此,对高安全性的分组密码算法的设计已经成了学术界关注的热点。

分组密码是密码学中的基础算法,它是很多上层信息安全协议的基础。分组密码的设计包括两个方面,一个组件是设计基本的轮函数,另一个组件是设计基本的密钥调度算法。所谓的密钥调度算法是基于一个主密钥生成很多轮的子密钥,而每轮子密钥都被使用在轮函数中。对于一个分组密码的安全性而言,子密钥生成算法的安全性尤为重要。目前出现的多种对流行分组密码最好的攻击,诸如对AES和IDEA算法的攻击都是利用其密钥生成算法弱点而进行的攻击的。

现有的分组加密算法由于密钥生成都是比较简单,普通的高级加密算法AES的密钥生成算法只使用简单的移位寄存器加上简单的S盒置换,并不能达到流密码的安全性。

技术实现要素:

本发明要解决的技术问题是:提高分组加密算法的安全性。

为了解决上述技术问题,本发明的技术方案是提供了一种基于流密码算法的子密钥生成方法,其特征在于,包括以下步骤:

根据具体的分组加密算法,确认加密轮数r,并生成主密钥K及初始化向量IV,初始化向量IV与主密钥K的比特数相同,将主密钥K及初始化向量IV装载入流密码算法的内部寄存器,运行流密码算法r次,从而得到r个子密钥,r个子密钥分别参与到分组加密算法的r轮轮函数的计算过程中。

目前对于流密码算法的安全性分析主要集中在其密钥流生成器上,而当前设计良好的流密码都可以被看作为一个伪随机数生成器,例如Salsa20流密码算法,当前还没有找到低于穷举攻击的方法,所以可以假设安全的流密码算法的密钥流生成器是单向且伪随机的。这样,使用主密钥生成的各轮子密钥就可以看作是彼此独立且随机的,这比当前的任何分组加密算法的子密钥调度方法都更加安全,因为本发明的方法的子密钥的安全性是建立在流密码生成器的单向可靠性上,而其他的分组密码则无此安全特性。

综上分析,采用本发明提供的方法生成的子密码进行分组加密的安全性非常高,本发明对于安全性要求很高,而对于效率不是很重要的应用场景很适用。

附图说明

图1为本发明提供的一种基于流密码算法的子密钥生成方法的流程图。

具体实施方式

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

结合图1,设分组加密算法采用AES-128,则针对该分组加密算法,本发明提供的一种基于流密码算法的子密钥生成方法包括以下步骤:

AES-128需要11轮的子密码。则生成一个128比特的初始化向量IV及128比特的AES-128的主密钥K。将128比特的初始化向量IV及128比特的AES-128的主密钥K装载入流密码算法的内部寄存器中(流密码算法可以使用流行的流密码算法,如RC4、Salsa20等)。然后运行该流密码算法11次,得到11个子密码,每个子密码为128比特。子密码的具体生成步骤为:先生成11*128=1408比特的密钥流,再将该密钥流分成11个子密钥,每个子密钥为128比特。然后每个子密码参与到分组加密算法相应轮数的轮函数的计算过程中。分组加密算法使用11个子密钥与相应的轮函数进行一系列运算,其过程为:

给定128比特的明文分组,使用AES-128加密算法的轮函数和相对应的子密钥进行变换。第1轮使用第1个子密钥和轮函数对分组密码的输入值,也称为状态进行变换,第2轮使用第2个子密钥和轮函数对内部状态进行变换,以此类推,直到第11轮使用第11个子密钥和轮函数对状态进行更新变换,最终得到密文。

本发明重新设计了一种分组加密算法的子密钥生成方法,此子密钥的生成是基于流密码来生成的。该子密钥生成方法的安全性取决于流密码的单向安全性。若流密码生成算法是单向安全的,则此子密钥生成算法也是安全的。

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

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

相关文章

学习java很痛苦_Java日期细微的痛苦提醒

学习java很痛苦这些天我不再需要使用java.util.Date了,但是最近选择这样做,这让我想起了使用与Java Date关联的API的痛苦 。 在这篇文章中,我看了弃用的参数化Date构造函数的一些令人惊讶的API期望,该构造函数接受六个整数 。 在…

如何理解程序保存数据就是输出,读取数据就是输入的含义(程序中输入input/输出output的含义如何理解)

文章目录程序是如何保存数据的为什么保存数据的类名称都表达一种输出意思,例如:output程序如何读取数据为什么读取数据的类名称都表达一种输入意思,例如:input总结程序是如何保存数据的 对象的序列化就是持久化,就是把…

hazelcast_HazelCast的Spring-Boot和Cache抽象

hazelcast以前,我们是使用spring提供的默认Cache Manager来开始Spring Cache抽象的。 尽管这种方法可能适合我们对简单应用程序的需求,但是在出现复杂问题的情况下,我们需要使用具有更多功能的其他工具。 Hazelcast就是其中之一。 当涉及到基…

eclipse preference没有server_Java Web开发的前期准备工作,部署Tomcat服务器和Server环境创建...

Java Web: 顾名思义,就是用Java的方式来解决Web开发,我也不讲太多的理论问题,直接将如何上手来进行Java Web开发。那么,我们一般进行Java Web开发,可以使用的工具很多,我这里使用eclipse。选择eclipse的版本…

类似TH养车的电商系统设计思路

平台运营模式B2CO2O,汽车用品全部平台自营,允许线下汽车服务门店入驻,门店运营模式O2O汽车服务全部标准化,由平台创建和维护服务商品根据商品实际使用需要关联服务商品线下汽车服务门店根据自己实际运营的情况选择有能力提供的汽车…

java int不将0忽略_Java微服务:蛋糕是骗人的,但您不能忽略它

java int不将0忽略构建微服务实际上意味着什么? 通过微服务框架的眼光回答 忽略微服务的趋势已变得不可能。 有些人会说这只是另一个难以忍受的流行语,而另一些人会背诵打破巨石的优势或采取逆势方法并关注负面因素。 在本文中,我们将全面了…

4怎么放大字体_Word字体怎么放大?简单教你几招轻松搞定

一般情况下我们都会选择用Word编辑文章。文章编辑完成之后我们通常会对文章进行排版。在排版的过程中如果我们需要将Word字体放大该怎么办呢?下面我就来教大家几个Word字体放大的小技巧,一起来看看吧。下面以放大“字体演示”为例为大家演示操作过程。一…

js splice坑_JavaScript的splice()方法在for循环中使用可能会遇到的坑!!!

在我们日常敲代码的时候,常常会用到splice()方法来删除数组中的元素(就是以截取的方式),因为它会直接对数组进行修改。在使用splice之前,必备条件是,要先有一个数组。var arr new Array(1,2,3,4,5); // 初始化一个数组var delete…

java crud_Java 8流中的数据库CRUD操作

java crud在开始使用新工具时要克服的最大障碍是让您着手处理小事情。 到目前为止,您可能对新的Java 8 Stream API的工作方式充满信心,但是您可能尚未将其用于数据库查询。 为了帮助您开始使用Stream API创建,修改和读取SQL数据库&#xff0c…

HH SaaS电商系统的线下服务商品库存和采购设计

线下服务商品库存和采购整体思路 线下服务商品直接在商品编辑页面编辑库存数量即可,服务端直接修改服务商品的销售库存即可线下服务商品则不必生成采购单和出库单线下服务商品无需发货,但是需要商家核销服务权益

HH SaaS电商系统的仓储系统设计

如果商城或者店铺选择开通了供应系统,那么就必然有仓储系统,如果选择不开通供应系统,可以独立开通仓储系统 未开通仓储系统 商城和店铺如果不需要仓储系统,那么商城和店铺就不会有仓储模块,所以无法手动创建库存单据…

wps如何将字体竖着排列_WPS文字中怎么竖着打字?wps文字竖排的设置方法介绍

wps中怎么样才能让文字竖着写啊?WPS现在的应用比较多,其实WPS文字和Word相差不过,都是一个办公软件,我们有时候在编辑的时候需要把文字竖排,那么,wps文字怎么竖排呢?接下来脚本之家小编就给大家…

cloudfoundry_在Cloudfoundry上部署RESTful服务

cloudfoundry在本文中,我们将使用Pivotal Cloud Foundry(PCF)开发人员在Cloudfoundry上部署RESTful服务。 由于创建静态Web服务不是本文的一部分,因此我已经创建了employee-service ,它具有静态后端,可以从…

HH SaaS电商系统的线上服务商品库存和采购设计

文章目录线上服务商品库存和采购整体思路线上服务商品的采购单状态线上服务商品的出库单状态商家完成服务线上服务商品库存和采购整体思路 线上服务商品直接在商品编辑页面编辑库存数量即可,服务端自动生成类型为“调整入库”的入库单和类型为“调整出库”的出库单…

arm linux gif 显示_100ASK_IMX6ULL arm板子如何显示图片、汉字、划线、背景色

最近在研究基于imx6ull开发板,想让开发板支持显示图片、字符串、背景色的功能。 操作的主要步骤如下:移植设备树和驱动移植libjpeg库编写测试程序一、移植设备树和驱动开发板原厂SDK已经移植了lcd对应的设备树和驱动。具体可以参考韦东山老师的文章https…

动态代码生成 静态代码生成_将速度提升到自己的个人代码生成器中

动态代码生成 静态代码生成Speedment是一个开源工具包 ,可用于生成Java实体和管理器以与数据库进行通信。 如果您需要域模型的对象关系映射,那么这很好,但是在某些情况下,您可能希望使用数据库作为模板来生成完全不同的东西。 在本…

HH SaaS电商系统的库存调整单设计

为了更加灵活地变动商品的库存,以及其它原因导致系统库存数和实际库存数不一致,可以通过库存调整单进行校正。 简简单单设计,没有状态管理,不需要通过审核,直接变更库存数~ 原型设计 库存调整单列表 库存调整单详情…

mysql优化 运维_MySQL运维---MySQL优化

一、优化1、优化的角度2、优化的方向3、数据库优化思路4、MySQL优化介绍5、优化工具介绍二、操作系统优化1、top命令1)CPU2)内存3)slab分配器---Linux内存4)page cache5)swap分区修改成不使用swap分区:永久生效,修改配置文件:2、大页内存机制…

微基准测试 r_在您的构建过程中添加微基准测试

微基准测试 r介绍 作为一个行业,我们正在采用更高的透明度和更可预测的构建过程,以降低构建软件的风险。 持续交付的核心原则之一是通过反馈循环收集反馈。 在Dev9中 ,我们采用了与CD原则一致的“ 先知道 ”原则,这意味着我们&…

HH SaaS电商系统服务商品在移动端下单结算的交互设计

服务商品只能单独下单购买,不允许加入购物车我们知道服务商品有三种形式:线上服务、到店服务、上门服务,因为不同服务形式买家和卖家所需的信息不同,所以交互界面也会不同,前端需要判断当前服务商品的服务形式&#xf…