在Python 3.x中并且与RSA加密相关,如何将字典值更新为布尔值?

问题描述 投票:0回答:1

我将列出要求和我的代码示例。如何修复代码?问题是我无法更新dict的值。到布尔格式。它可能要求我通过dict的每个值。检查是真还是假

例如,Initial:D = {“1”:2,“2”:3}用作输出:D = {“1”:True,“2”:False}

要求:

  • 输入必须是字典(D)和元组(e,N)形式的RSA公钥。字典必须包含作为消息的键和作为签名的值。
  • 输出必须是包含键作为消息的字典(与输入中相同),但如果签名与公钥值匹配,则值表示为True或False。 def Q1(D,key): e = key[0] N = key[1] for k,v in D.items(): if (v ** key[0]) % key[1] == int(k) % key[1]: D[v] = True else: D[v] = False

它返回一个错误:

> <RuntimeError                              Traceback (most recent call
> last) <ipython-input-3-9cfd98926b81> in <module>
>       9             D[v] = False
>      10 
> ---> 11 Q6({"1":2,"2":3},(5,14))
> 
> <ipython-input-3-9cfd98926b81> in Q6(D, key)
>       3     N = key[1]
>       4 
> ----> 5     for k,v in D.items():
>       6         if (v ** key[0]) % key[1] == int(k) % key[1]:
>       7             D[v] = True
> 
> RuntimeError: dictionary changed size during iteration>
python-3.x dictionary boolean rsa public-key
1个回答
0
投票

它说dictionnary改变了大小因为你使用v而不是k作为索引,所以它在dictionnary中添加了更多对并且失败,改为:

D[k] = True
© www.soinside.com 2019 - 2024. All rights reserved.