更新
我有一个程序来获取两个公钥和私钥以验证这些密钥
这些密钥是否有效
我们假设我们的密钥是有效的
(pub , privateKey) = rsa.newkeys(1024)
然而,对于p,q和nlen,我有一个关系
这是我们关于p和q的数学方程:
- The primes p and q shall be selected with the following constraints:
(a) (p–1) and (q–1) shall be relatively prime to the public exponent e.
(b) The private prime factor p shall be selected and shall satisfy
(a)条件成功通过
但我不能理解(b)项
另一方面,我们说len(p)=len(q)=nlen/2
nlen
等于模块的大小(以位为单位)
让我们谈谈这种情况:
这些代码是p、q、d、e和nlen的定义
p = privkey.p
q = privkey.q
d = privkey.d
e = privkey.e
nlen = privkey.n.bit_length()
我们使用以下代码实现了我们的条件:
if not sqrt(2) * (2 ** ((nlen/2) - 1)) <= p <= (2 ** (nlen/2)) - 1:
return "Invalid P prime number size"
以及使用以下代码实施的其他条件:
检查q透镜
if not sqrt(2) * (2 ** ((nlen/2) - 1)) <= q <= (2 ** (nlen/2)) - 1:
return "Invalid Q prime number size"
上述条件不匹配,他们的身体在奔跑
无论如何,对于解密len条件,这个问题是正确的
第二个条件成功通过
但首先将我的书面错误抛出到父类
这是我的代码:
if not 2 ** (nlen/2) < d < lcm(p-1, q-1):
return "Invalid decryption key"
但是为什么呢
我认为我的问题与nlen有关。因为无论我在哪里使用nlen,我的测试都没有通过或失败
我检查了它的值,但我不知道我能做些什么来解决这个问题
此私钥和公钥是绝对有效的。但对于安全密钥,我们的条件是正确的
我们可以使用pycryptodome python库来提高密钥测试的安全性
在这种情况下,我们应该使用这些密码短语创建密钥对,并在pycryptodome中使用相同的密码短语加载它们
我认为你的文字是错误的,因为这两个主要因素只用于计算键,而没有公布。以下答案将检查钥匙是否有效,而不是是否安全:
要检查两个键是否有效,需要具有以下值:
相关问题 更多 >
编程相关推荐