-1

如何创建 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 语句以使用私钥打印不同,而另一个语句用于公钥?

4

2 回答 2

1

您没有count在循环体中递减。所以这个表达式永远count<5存在。True

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

for n in range(5)
于 2017-05-16T01:47:19.020 回答
0

如所写,

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

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

于 2017-05-16T01:47:07.480 回答