首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于“生成器g的可验证规范生成”的Python代码FIPS 186-4返回False

用于“生成器g的可验证规范生成”的Python代码FIPS 186-4返回False
EN

Stack Overflow用户
提问于 2021-12-07 08:33:07
回答 1查看 83关注 0票数 2

我已经在密码StackExchage上问了这个问题,有一个人已经回答了。我已经采纳了答案中所建议的修改,但仍然返回为false。

更多的上下文:我正在浏览FIPS 186-4,在第43页上,有一个生成生成器的算法,A.2.3可验证的规范生成生成器g。我编写了一个Python代码,如下所示,它对这个算法进行了编码。然而,它总是返回假的测试数据,我从NIST测试矢量 (测试向量,FIPS186-4,DSA ).我还在要旨上发布了整个文件)。

代码语言:javascript
复制
from Crypto.Hash import SHA256


P = 0xff600483db6abfc5b45eab78594b3533d550d9f1bf2a992a7a8daa6dc34f8045ad4e6e0c429d334eeeaaefd7e23d4810be00e4cc1492cba325ba81ff2d5a5b305a8d17eb3bf4a06a349d392e00d329744a5179380344e82a18c47933438f891e22aeef812d69c8f75e326cb70ea000c3f776dfdbd604638c2ef717fc26d02e17
Q = 0xe21e04f911d1ed7991008ecaab3bf775984309c3
domain_parameter_seed = b'180180ee2f0ae4a7b3a1ab1b8414228913ef2911'
ggen = b'6767656e'
index = b'79'
G = 0xc52a4a0ff3b7e61fdf1867ce84138369a6154f4afa92966e3c827e25cfa6cf508b90e5de419e1337e07a2e9e2a3cd5dea704d175f8ebf6af397d69e110b96afb17c7a03259329e4829b0d03bbc7896b15b4ade53e130858cc34d96269aa89041f409136c7242a38895c9d5bccad4f389af1d7a4bd1398bd072dffa896233397a



def compute_gen():
    k = (P - 1) // Q
    for count in range(1, 0xffff):
        U = domain_parameter_seed + ggen + index + count.to_bytes(2, 'big')
        W = int.from_bytes(SHA256.new(U).digest(), 'big')
        g = pow(W, k, P)
        print(g)
        if g != 1:
            break
 
    return g


print (compute_gen() == G)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 09:00:48

domain_parameter_seedggenindex必须用bytes.fromhex()转换为类似字节的对象。

代码语言:javascript
复制
U = bytes.fromhex((domain_parameter_seed + ggen + index).decode('utf8')) + count.to_bytes(2, 'big')

通过这一更改,代码可以工作。

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

https://stackoverflow.com/questions/70257030

复制
相关文章

相似问题

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