首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将信函转换为数字以创建身份验证器

将信函转换为数字以创建身份验证器
EN

Cryptography用户
提问于 2021-01-29 16:43:12
回答 2查看 50关注 0票数 1

在DJB的多项式评估和消息认证的2.2节中,他描述了第一个可证明的安全身份验证器的构造,这是Gilbert、MacWilliams和Sloane的工作。

修正有限域k。合法发送方生成9个独立的统一随机秘密r1, r2, . . . , r8, s ∈ k。发送方私下会见合法接收方,并告知接收方相同的秘密r1, r2, . . . , r8, s。稍后,发送方希望通过公共网络向接收方发送消息m,其中m是由8个组件组成的m1, m2, . . . , m8 ∈ k序列。发送方将m与身份验证器a=m1r1+···+m8r8+s ∈ k一起传输。

很好。假设整个消息如下所示:

对不起,先生,我的灯已经亮了。

这个消息被方便地分解成一个由八个组件组成的序列。

我想不出的是一个简单的问题:如何用数字表示上面所示的计算的字母/块。

最好的方法是什么?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2021-01-29 17:00:01

最好的方法是什么?

嗯,任何将字符串转换为值的方法(并且两个不同的字符串永远不会编码到相同的值集)都会工作,所以我不知道是否有一个杰出的‘最佳’。

一种简单的方法是获取每个组件的ASCII值,并将其解释为整数(实际上是k中的一个元素)。例如,字符串“对不起”在ASCII中是值0x73、0x6f、0x72、0x72、0x79),因此您只需将它们连接到单个值0x736f727279 = 495791010425;这就是您的值。

票数 1
EN

Cryptography用户

发布于 2021-01-29 16:58:55

规格化输入并使用UTF-8对其进行编码。这会给你带来八重奏弦。然后,特定的块大小取决于您正在使用的系统。对于Poly1305,将16字节长八进制字符串视为小端点整数.RFC8439提供了将由字节组成的消息转换为适当大小的块的方法(对于Poly1305,其他这样的系统需要不同的大小):

O将消息...divide为16字节块.最后一个可能更短:O将块读取为一个小的端点数。除了八位数之外,再加一点。对于一个16字节的块,这相当于在数字中添加2^128 .对于较短的块,可以是2^120,2^112,也可以是任何2的幂,都可以被8整除,直到2^8。o如果块不是17字节长(最后一个块),则用零填充它。如果您将这些块作为数字处理,则这是毫无意义的。

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

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

复制
相关文章

相似问题

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