10位用户的用户注册计划

时间:2017-02-10 12:17:11

标签: c++

我对编码非常陌生,并且正在尝试完成一个管理C ++用户注册的简单系统(使用密码哈希)。我想出了如何存储我们的教师所需的用户名和密码,并试图找出如何在3次尝试失败后锁定某人。在我的代码中,我已经注释掉了我试图用来执行此操作的代码,但我认为它不会起作用。我真的很感激有关如何创建一个功能的建议,在3次尝试之后锁定某人。

#include <iostream>
#include <string>


using namespace std;

int returnVal(char x)
{
    return x - 96;

}

char usrname;



int main() {

    string name[10];
    int password[10];
    bool status[10];



    int index = 0;
    for (int i = 0; i < 10; i++)



    {
        //int count = 0;
        //for (;;)
        //{
            //ask_password();
            //if (password == expected_password)
                //break;
            //count++;
            //if (count == 3)
            //{
            //  Sleep(300000);    // 5 minutes = 300000 ms. 
            //  count = 0;
            //}
        }
        string s;

        cout << "Please Enter Username   " << endl << "Should you wish to stop entering user information enter 0:  ";
        cin >> name[index];

        if (name[index] == 0) {
            break;
        }

        cout << "Please Enter Password   ";
        cin >> s;

        cout << "Are you a regular user or an admin?  " << endl << "Enter 0 for a regular user and 1 for admin: ";
        cin >> status[index];




        int niffler = 0;

        for (unsigned int i = 0; i < s.length(); i++)
        {

            niffler = niffler + returnVal(s[i]);
        }

        password[index] = niffler;

        cout << niffler;

        index++;
    }

    cout << "10 users have been created";


    // check username array for input
    // save where in the array we find the correct username
    // check password

    return 0;

}

1 个答案:

答案 0 :(得分:-1)

好的,我现在感觉相当慷慨。我只是想在聊天中这样做,但我不能和你在一起,因为你的代表点数是1.无论如何,我会帮你帮助你做功课(不是为你做的) 。如果随后发生的任何事情都会让人感到痛苦,那当然是因为无论经验水平如何,我个人都会期望更好的是我的学生。

首先,意大利面的怪物是全球范围内的以下代码行?

char usrname;

无论是什么,它都不会好。说到不好。我要假设你的密码&#34;哈希&#34;功能如下(在我使用&#34; returnValue()&#34;之后合成niffler之后?

int hashPassword(const std::string& password) {
    int hash = 0;
    for (size_t i = 0; i != password.size(); ++i)
        hash += password[i] - 96;
    return hash;
}

这不是哈希函数。如果你做数学就意味着密码&#34; Pz&#34;和&#34;&#34;完全相同(0)。事实上,无数个字符组合会产生完全相同的哈希值。此时,你可能会捏住自己的鼻子并直接存储密码,因为有人可以比他们访问实际密码更快地强制密码(通过哈希冲突)。不要这样做,但使用更好的散列机制。我想向您指出维基百科的文章Cryptographically secure hashesHash salting

你正在做的事情是不可思议的错误。您的导师要求您允许十个人登录正确吗?为什么十个人同时登录?有些东西告诉我你的导师希望你允许让10个人登录,不一定全部同时登录。为什么任何程序都要求10个人登录? Facebook或Twitter会给你10个登录提示吗?

把它想象成一个真实世界的节目......

  • 您需要一个最多10个登录条目的数据库,包括用户名,密码哈希和访问权限。
  • 运行程序允许用户登录,如果它们在数据库中。
  • 如果他们登录失败,他们应该被锁定。 中止该程序并让它们再次重新运行以再次尝试(因为sleep()会让他们这样做)不计算
  • 如果他们成功登录,请检查他们的访问凭据。为什么你会问用户他们是否是管理员?

所有这些都是if条件。抽象出来了一下。像你这样的程序是一个程序,因为如果你不能像计算机一样思考,你就无法编写软件。

对于额外信用,如果他们是管理员,则让他们添加,修改或删除用户记录。第一个(硬编码)用户通常是管理员,几乎总是由程序员添加。