如何创建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()
我打算只使用爱丽丝,所以我没有4把钥匙。我只需要一个秘密(私人)密钥和公钥。如何创建2个if else语句以使用私钥不打印相同而另一个用于公钥?
答案 0 :(得分:1)
你没有在循环体中递减count
。所以表达式count<5
永远保持True
。
在这个用例中,使用for循环而不是while循环可能更容易。
for n in range(5)
答案 1 :(得分: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
顺便说一句,这些秘密密钥相同的机会应该是非常非常非常小的。如果您通常获得相同的密钥,则加密算法会出现问题。