我对编码非常陌生,并且正在尝试完成一个管理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;
}
答案 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 hashes和Hash salting。
你正在做的事情是不可思议的错误。您的导师要求您允许十个人登录正确吗?为什么十个人同时登录?有些东西告诉我你的导师希望你允许让10个人登录,不一定全部同时登录。为什么任何程序都要求10个人登录? Facebook或Twitter会给你10个登录提示吗?
把它想象成一个真实世界的节目......
sleep()
会让他们这样做)不计算。所有这些都是if
条件。抽象出来了一下。像你这样的程序是一个程序,因为如果你不能像计算机一样思考,你就无法编写软件。
对于额外信用,如果他们是管理员,则让他们添加,修改或删除用户记录。第一个(硬编码)用户通常是管理员,几乎总是由程序员添加。