【问题标题】:How do I add an if-else statement without running an infinite loop?如何在不运行无限循环的情况下添加 if-else 语句?
【发布时间】:2017-05-16 01:33:33
【问题描述】:

如何创建 if else 语句以确保私钥不会被打印出来?我想确保生成的密钥不一样。它只是一种预防措施。但是当我将 if-else 语句放入代码中时,它会运行一个无限循环。我需要至少打印 5 次密钥。我怎样才能解决这个问题?我真的很感激这段代码的任何帮助!从https://github.com/truh/CryptoFun 获得这些代码。

e.g
if box.sk == box.sk:
   generatekeys()

else:
   print("Success!")

在下面的代码中我应该把 if else 语句放在哪里,这样它就不会运行无限循环?

def generatekeys():

 count = 0
 while (count<5):

    import libnacl.public
    import libnacl.secret
    import libnacl.utils

    msg = b'But then of course African swallows are not migratory.'
    # This methods creates a keypar(public,private) for the Clients

    alice = libnacl.public.SecretKey()


    alice_box = libnacl.public.Box(alice.sk, alice.pk)


    box = libnacl.secret.SecretBox()
    print(box.sk)


    alice_ctxt = alice_box.encrypt(box.sk)
    print(alice_ctxt)


    aclear = alice_box.decrypt(alice_ctxt)
    print(aclear)

    # Alice encrypts a message with the shared key and send it to Bob
    encr = box.encrypt(msg)
    print(encr)

    box2 = libnacl.secret.SecretBox(aclear)
    decr= box2.decrypt(encr)
    print(decr)


  generatekeys()

我打算只使用 alice,所以我没有 4 个键。我只需要一个秘密(私人)密钥和公共密钥。我如何创建 2 个 if else 语句以使用私钥不打印相同和另一个用于公钥?

【问题讨论】:

  • 如果它们生成正确,它们将不一样。相信我。

标签: python-3.x loops if-statement cryptography curve-25519


【解决方案1】:

您没有在循环体中递减count。所以表达式count&lt;5 永远保持True

在这个用例中,使用 for 循环而不是 while 循环会更容易。

for n in range(5)

【讨论】:

  • 嗨!!感谢您的快速回复,我尝试了 for 循环,它可以在没有 for 循环的情况下工作,但是当我添加 if-else 语句时,它进入了无限循环。我在上面编辑了我的代码,感谢帮助!!!
【解决方案2】:

正如所写,

if box.sk == box.sk:
   generatekeys()

总是会在 generatekeys() 中导致无限循环。这是因为 bok.sk 将始终等于自身。您担心这段代码中哪两个键是相同的?也许你的意思是:

 bob = libnacl.public.SecretKey()
 alice = libnacl.public.SecretKey()
 if bob.sk == alice.sk:
       generatekeys()
 else:
       count++
       ...the rest of your code

顺便说一句,这些密钥相同的可能性应该非常、非常、非常小。如果您通常获得相同的密钥,则说明您的加密算法存在问题。

【讨论】:

  • 嗨!谢谢你的快速回复!我编辑了我的代码并使其更加具体。你觉得你能帮忙吗?
  • 我已经更新了我的答案。如果您想退出该 while 循环,则需要让 count >= 5。
猜你喜欢
  • 2021-11-24
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2016-04-07
  • 2023-04-04
  • 2015-10-28
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多