10个用户的用户注册程序
User registration program for 10 users
我对编码非常陌生,正在尝试完成一个在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
条件。把它抽象一点。程序就像你是一个程序,因为如果你不能像电脑一样思考,你就不能编写软件。
对于额外的信用,如果他们是管理员,则允许他们添加、修改或删除用户记录。第一个(硬编码的)用户通常是管理员,几乎总是由程序员添加。
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 在遍历处理程序的向量时注册和注销处理程序
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 编写一个不断要求用户输入的程序
- 我怎样才能有 2 个程序并让用户选择他们想要使用的程序?
- 如何在 Win32 控制台应用程序中注册不可见的窗口类?
- 10个用户的用户注册程序
- 内联 asm 分配给"FS:0":处理程序未注册为安全处理程序
- 要在Windows上读取/设置用户屏幕保护程序,是否需要使用系统注册表或SystemParametersInfo API
- 禁用其他应用程序编辑注册表项
- 在pjsip应用程序上注册示例错误
- MFC 单文档应用程序用户输入
- 如何通过C++程序通过注册表编辑更改IE 9的默认搜索提供程序
- 如何使用注册表中的CurrentVersionRun键为特定用户自动启动程序
- c++程序使注册表通过WMI录入不工作
- 在Qt应用程序中注册帮助手册
- 用于非unicode程序和注册表设置的语言
- 控制台应用程序-用户可以为c++中的整数变量输入的最高值是多少