Как добавить оператор if-else без выполнения бесконечного цикла?
Как создать оператор 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, если операторы else для использования закрытых ключей не печатаются одинаково, а еще один - для открытого ключа?
2 ответа
Вы не убываете count
в теле цикла. Итак, выражение count<5
остатки True
навсегда.
В этом случае может быть проще использовать цикл for вместо цикла while.
for n in range(5)
Как написано,
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
Кстати, шансы того, что эти секретные ключи будут идентичны, должны быть очень, очень, очень малы. Если вы обычно получаете идентичные секретные ключи, в вашем криптографическом алгоритме есть проблема.