Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement If语句跳过第一个条件。尝试遵循1-4个步骤_If Statement_Conditional Statements - Fatal编程技术网

If statement If语句跳过第一个条件。尝试遵循1-4个步骤

If statement If语句跳过第一个条件。尝试遵循1-4个步骤,if-statement,conditional-statements,If Statement,Conditional Statements,我试图建立一个虚拟投票亭,接受用户id加密,验证和验证选民id,然后检查选民是否已经投票。但它跳过了第一个条件。我不是一个专业的程序员。我是新手,正在学习python。我需要你的帮助!提前感谢您的专业知识 以下是步骤: 步骤1:投票者生成一对私钥和公钥-用于数字签名。投票者使用其私钥对其请求进行签名,并使用CLA的公钥发送其消息。消息必须包括投票者的签名id,例如SSN(请求)和投票者的公钥。CLA和CTF的公钥可以在投票人开始会话时传递给他/她 步骤2:CLA使用其私钥读取步骤1发送的消息,并

我试图建立一个虚拟投票亭,接受用户id加密,验证和验证选民id,然后检查选民是否已经投票。但它跳过了第一个条件。我不是一个专业的程序员。我是新手,正在学习python。我需要你的帮助!提前感谢您的专业知识

以下是步骤:

  • 步骤1:投票者生成一对私钥和公钥-用于数字签名。投票者使用其私钥对其请求进行签名,并使用CLA的公钥发送其消息。消息必须包括投票者的签名id,例如SSN(请求)和投票者的公钥。CLA和CTF的公钥可以在投票人开始会话时传递给他/她

  • 步骤2:CLA使用其私钥读取步骤1发送的消息,并使用投票者的公钥查找投票者的id。CLA使用其私钥加密验证号并将其发送给投票者。投票者使用CLA的公钥查找验证号

  • 步骤3:CLA使用CLA和CTF之间协商的对称密钥将验证号列表发送给CTF

  • 步骤4:用户发送给CTF的消息必须使用CTF的公钥进行加密

  • 结果显示:

    C:\Python27\python.exe“C:/python项目/virtualelectionbooth/VEB.py”

    欢迎来到维多利亚选举摊位

    输入您的投票人id:1234

    你已经投票了!谢谢大家!

    进程已完成,退出代码为0

    下面是代码:


    从代码的角度看,您似乎在将decrypt_id与文件中的所有内容进行比较,其中包含的不仅仅是decrypt_id数据。因此,由于数据不同,将永远不会执行if语句。

    当您使用file.read()时,您将读取文件的全部内容,您以前使用
    str(encdata)
    decrpyt\u id
    str(encdata\u 2)
    编写了该文件。为了便于解释,假设
    encdata
    为1,
    decrypt\u id
    为2,
    encdata\u 2
    为3
    verify_vote
    将是一个包含“123”的字符串,因为这是您编写的,
    decrypt_id
    将是一个包含“2”的字符串。if语句计算为true的唯一情况是
    encdata
    encdata_2
    都是空字符串

    编辑:再仔细看看这段代码,if语句的目的似乎是防止用户多次投票。您可能要考虑的是,创建一个清单,该代码是“代码>解密密码Is/COD>,在每次验证一个投票人的ID时添加到IF语句中,如果在未经验证的列表中解密,则生成IF语句<代码>:

    因此,if块将成为

    if decrypt_id not in verified_list:
        print '\n'
        print 'Your voter id is verified!'
        print '\n'
        Vote = raw_input('Please place your vote: ')
        file = open('ctf.txt', 'a') #open cla file (as a server)
        file.write(str(publickey)) #writes publickey to cla file
        file.write('\n')
        file.write(Vote)
        verified_list.append(decrypt_id)
    else:
        print '\n'
        print 'You have already voted! Thank you!;
        print '\n'
    

    另一件需要注意的事情是,您打开cla.txt进行阅读,但从未关闭它。您应该在
    验证投票=file.read()之后放置一个
    文件.close()
    谢谢您的帮助,我将尝试列表。
    
    if decrypt_id not in verified_list:
        print '\n'
        print 'Your voter id is verified!'
        print '\n'
        Vote = raw_input('Please place your vote: ')
        file = open('ctf.txt', 'a') #open cla file (as a server)
        file.write(str(publickey)) #writes publickey to cla file
        file.write('\n')
        file.write(Vote)
        verified_list.append(decrypt_id)
    else:
        print '\n'
        print 'You have already voted! Thank you!;
        print '\n'