10个用户的用户注册程序

User registration program for 10 users

本文关键字:程序 用户注册 用户 10个      更新时间:2023-10-16

我对编码非常陌生,正在尝试完成一个在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。不管怎样,我会帮你做作业(而不是帮你做)。如果下面的任何内容听起来都很简洁,那肯定是因为我个人对我的学生抱有更好的期望,无论经验水平如何。

首先也是最重要的一点,以下这行代码以意大利面条怪物的名义在全球范围内用于什么?

char usrname;

不管是什么,都不可能是好的。说到不好。我是不是假设你的密码"hash"函数如下(在我将returnValue()和"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;
}

这不是散列函数。如果你计算一下,这意味着密码"Pz"answers"完全相同(0)。事实上,无数的字符组合会产生完全相同的散列。在这一点上,你还不如捏住鼻子直接存储密码,因为有人可以比他们访问实际密码更快地强行使用密码(通过哈希冲突)。不要这样做,但要使用更好的哈希机制。我想向您介绍维基百科的文章加密安全哈希和哈希盐析。

你所做的事情的流程是令人难以置信的错误。你的教练要求你允许10个人登录,对吗?为什么会有十个人同时登录?告诉我,你的讲师希望你允许10人登录,但不一定同时登录。为什么任何程序都要求10个人登录?脸书或推特会给你10个登录提示吗?

把它想象成一个真实世界的程序。。。

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

所有这些都是if条件。把它抽象一点。程序就像你是一个程序,因为如果你不能像电脑一样思考,你就不能编写软件。

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