2017-05-16 8 views
-1

어떻게하면 개인 키가 똑같이 인쇄되지 않도록 if else 문을 만들 수 있습니까? 생성 된 키가 동일하지 않은지 확인하려고합니다. 그것의 예방책. 하지만 if-else 문을 코드에 넣으면 무한 루프가 실행됩니다. 최소한 5 번 이상 키를 인쇄해야합니다. 이 문제를 어떻게 해결할 수 있습니까? 이 코드에 대한 도움을 주시면 감사하겠습니다. 이 코드는 https://github.com/truh/CryptoFun에서 가져 왔습니다.무한 루프를 실행하지 않고 if-else 문을 추가하려면 어떻게합니까?

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 개의 키를 사용하지 않으려 고합니다. 난 단지 하나의 비밀 (개인) 키와 공개 키가 필요하다. 개인 키를 사용하기위한 else 문이 동일한 키와 공개 키를위한 또 다른 문을 출력하지 않으면 어떻게해야합니까? 서면으로

+0

제대로 생성되면 동일하지 않습니다. 날 믿어. –

답변

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 

그런데 그 비밀 키가 동일한 가능성은 아주 아주 작아야합니다. 일반적으로 동일한 비밀 키를 얻는 경우 암호화 알고리즘에 문제가 있습니다.

+0

안녕하세요. 예리한 답장을 보내 주셔서 감사합니다! 필자는 내 코드를 편집하여보다 구체적으로 작성했습니다. 네가 도울 수 있다고 생각하니? – lmao

+0

답변을 업데이트했습니다. 루프를 종료하고 싶다면 count> = 5가 필요합니다. –

1

루프 본문에서 count을 감소시키지 않습니다. 따라서 count<5이라는 표현은 영원히 True입니다.

이 사용 사례에서는 while 루프 대신 for 루프를 사용하는 것이 더 쉬울 수 있습니다.

for n in range(5) 
+0

안녕하세요 !! 답장을 보내 주셔서 감사합니다. for 루프를 사용해 보았습니다. for 루프없이 작동하지만 if-else 문을 추가하면 무한 루프가됩니다. 위의 코드를 편집했는데 도움이됩니다. – lmao