首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANSI X9.31 AES伪码或算法解释

ANSI X9.31 AES伪码或算法解释
EN

Cryptography用户
提问于 2017-09-29 12:27:28
回答 1查看 1.7K关注 0票数 1

我想编写一个程序,通过使用ANSI X9.31和AES 128位来生成随机数据,但是我只能用密码符号找到standart,但我不清楚。

代码语言:javascript
复制
I = ede *K(DT)
R = ede *K(I XOR V)
V = ede*K(R Xor I)

您能解释一下算法是如何工作的吗?或者建议我使用任何文档来理解它,我试着从表示法中理解,但我无法理解。谢谢你的进阶。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2017-09-29 13:00:27

让我们详细介绍以下步骤:

代码语言:javascript
复制
I = ede*K(DT)

K是一个长期的秘密密钥;这是一个随机值,它是X9.31的键;它是以某种方式被选中的(X9.31没有指定如何),随机数的安全性取决于它。因为您使用的是AES,所以这将是一个随机的128位值。

当它说' ede *K(X)‘时,X9.31的意思是’取值X,并通过块密码操作(在加密方向)发送它。X9.31称它为ede,因为它是按照3 DES编写的(这是通过在ede模式下执行3 DES操作完成的);对您来说,您只需用一个AES加密操作来替换它。

DT是当前的日期/时间(每次迭代都会更新);对于您来说,这将是一个128位值,您为如何表示当前时间而选择的格式并不重要。

结果被放置在一个临时位置(称为I)

代码语言:javascript
复制
R = ede*K(I XOR V)

V是X9.31当前状态(也需要保密);对于您来说,这是一个128位值。

在这个步骤中,采用当前状态V (独占状态或使用我在前一步中生成的temp变量),通过AES发送。

R是X9.31生成此迭代的128位输出。

代码语言:javascript
复制
V = ede*K(R Xor I)

在这里,您将在前两个步骤中生成的两个值,即独占值或它们一起,通过AES发送;这是您将用于下一次迭代的更新的X9.31状态。

而且,请记住,当您这样做时,R包含了您要求的128个随机位.

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/51900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档