基于ANSI X9.17的伪随机数发生器实现

本文介绍了基于ANSI X9.17标准的伪随机数发生器的设计与实现,该生成器在密码学中用于产生高强度随机数,确保安全。文章详细讲解了算法流程,并提供了C++实现示例,包括输入、密钥生成和输出的逻辑。通过16轮迭代,生成1024比特长度的随机数。
摘要由CSDN通过智能技术生成

去年做的密码学开发实践,其实这东西看穿了也没啥难的,别看题目起的多吓人,其实程序是简单的很,哈哈,今天懒得打字了,直接把当时的课程设计报告部分内容copy过来吧。

 

设计背景

随机数在密码学中起着极其重要的作用,例如在相互认证、产生密钥等的过程中都需要使用高强度的随机数来保证安全。所谓的高强度就是指随机数序列需要满足随机性和不可预测性。

真正的随机数实际上是难以获得的,因此通常意义上我们使用的都是伪随机数,但如果算法设计的好,伪随机数也可以通过各种随机性检验。

基于ANSI X9.17的伪随机数产生器是密码强度最高的伪随机数产生器之一,目前已经在包括PGP等许多应用中被采纳。

设计目的

该例是应用密码算法程序设计的课程设计,要求在深入理解ANSI X9.17随机数产生的流程基础上,使用一种编程语言实现一个基于ANSI X9.17的随机数发生器。

要求生成的随机数长度为1024比特,使用十六进制表示时为128字节;并且要求拥有良好的用户界面,使用户可以很快上手,易学易用。

理论知识介绍

ANSI X9.17标准是美国国家标准化协会制订的金融机构密钥管理规范;ANSI(美国国家标准化协会)负责金融安全的小组是ASC X9和ASC X12。其中ASC X9负责制定金融业务标准,ASC X12负责制定商业交易标准。其中ANSI X9.17标准制定于1985年,对金融机构的密钥管理进行了规范。

在多数情况下,我们都是使用某种特定的密码算法来辅助完成随机数的产生,ANSI X9.17也不例外,它的算法就是基于大名鼎鼎的DES(数据加密标准)。

数据加密标准(Data Encryption Standard,DES)是迄今世界上最为广泛使用和流行的一种分组密码算法,它的分组长度为64比特,密钥长度为56比特,它是由美国IBM公司研制的,源于早期的一种被称为Lucifer密码的发展和修改。

DES是一个迭代型的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用16个循环。

为了提高安全性,通常人们并不使用单纯的DES,而是将DES算法在多密钥情况下多重使用,例如两个密钥的三重DES。此方案已经被证明了是行之有效的,已在密钥管理标准ANSI X9.17和ISO 8732中被采用。

关于DES的详细计算过程就不说了,下图是ANSI X9.17的实现逻辑:

在上图中的EDE表示两个密钥的三重DES算法;产生器主要有3个组成部分。

1) 输入 输入为两个64比特的伪随机数,其中DTi表示当前的日期和时间;每产生一个数Ri后,DTi都会更新一次;Vi是产生第i个随机数时的种子,其初值可任意设定,以后每次都会自动更新。

2) 密钥 产生器使用了3次三重DES加密,3次加密使用相同的两个56比特密钥K1和K2,这两个密钥必须保密且不能用作他用。

3) 输出 输出为一个64比特的伪随机数Ri和一个64比特的新种子Vi+1

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值