热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多用户密码验证与加密登录系统

本文介绍了一种基于多用户密码文件的加密登录方法,通过读取用户密码文件并使用简单的加密算法实现安全登录。文中详细描述了程序的设计思路及其实现过程。

在日常应用中,为了提高系统的安全性,常常需要对用户的登录信息进行加密处理。本文将探讨一种多用户密码验证与加密登录的方法,该方法通过读取存储在文本文件中的用户密码,并使用简单的加密算法确保登录的安全性。

本文将详细介绍该程序的设计理念、实现步骤以及具体的代码实现,希望能为读者提供一定的参考价值。

程序的核心功能在于读取一个包含多个用户密码的文件,用户输入密码后,程序会验证密码的正确性。若密码正确,程序将生成一个随机数,并要求用户根据特定的加密规则输入加密后的口令以完成登录。加密规则采用了一个简单的算法,即将密码与随机数相加后取模10。当然,这一加密算法相对简单,实际应用中可根据需要选择更复杂的加密算法以增强安全性。

下面是程序的具体实现:

#include
#include
#include
#include
using namespace std;

int main() {
ifstream fin("passwords.txt"); // 假设文件名为passwords.txt
int passwords[100];
for (int i = 0; i <100; i++) {
fin >> passwords[i];
}
fin.close();
int inputPassword[5], newPassword[5], inputNewPassword[5], randomNumbers[5];
cout <<"请输入密码: ";
for (int i = 0; i <5; i++) {
cin >> inputPassword[i];
}
bool found = false;
for (int p = 0; p <20 && !found; p++) {
bool match = true;
for (int j = 0; j <5; j++) {
if (inputPassword[j] != passwords[p * 5 + j]) {
match = false;
break;
}
}
if (match) {
cout <<"密码输入正确!" < cout <<"随机数为: ";
srand(time(0));
for (int k = 0; k <5; k++) {
randomNumbers[k] = rand() % 10;
cout < }
cout < for (int o = 0; o <5; o++) {
newPassword[o] = (passwords[p * 5 + o] + randomNumbers[o]) % 10;
}
cout <<"请输入加密后的口令: ";
for (int z = 0; z <5; z++) {
cin >> inputNewPassword[z];
if (inputNewPassword[z] != newPassword[z]) {
cout <<"口令计算错误,程序终止" < return 0;
}
}
cout <<"口令输入正确,成功登陆!" < found = true;
}
}
if (!found) {
cout <<"密码输入错误,程序终止!" < }
return 0;
}

上述程序中,文件格式如下所示,每个用户密码由5位数字组成,每组密码之间用空格分隔:

1 2 3 4 5
0 7 2 2 8
2 4 5 6 1

此文件最多可存储20个用户的密码信息。如果需要支持更多的用户,可以通过调整数组大小来实现。程序运行时,用户需按提示依次输入密码和加密后的口令,只有当两者均正确时,才能成功登录系统。

以上就是本文的全部内容,希望对您有所帮助。如果您有任何问题或建议,欢迎留言交流。


推荐阅读
  • 正文♦时间复杂度:\(\mathcal{O}(n)\)思维题,不需要建树。设数组\(a\)记录每一个节点是否尊重它的父节点,数组\(b\)记录是否有节点尊重它,特别的,叶子节点必然 ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 题目描述:给定 n 把雨伞和 m 个人,t 分钟后开始下雨。求在每个人只能使用一把雨伞的情况下,最多有多少人可以拿到雨伞。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • ZOJ 2760 - 最大流问题
    题目链接:How Many Shortest Paths。题目描述:给定一个包含n个节点的有向图,通过一个n*n的矩阵来表示。矩阵中的a[i][j]值为-1表示从节点i到节点j无直接路径;否则,该值表示从i到j的路径长度。输入起点vs和终点vt,计算从vs到vt的所有不共享任何边的最短路径数量。如果起点和终点相同,则输出无穷大。 ... [详细]
  • A1166 峰会区域安排问题(25分)PAT甲级 C++满分解析【图论】
    峰会是指国家元首或政府首脑之间的会议。合理安排峰会的休息区是一项复杂的工作,理想的情况是邀请的每位领导人都是彼此的直接朋友。 ... [详细]
  • 2022年4月15日的算法练习题,包括最长公共子序列和线段树的应用。 ... [详细]
  • 本文介绍了两个重要的Node.js库——cache-content-type和mime-types,它们在处理HTTP响应头时非常有用。cache-content-type是基于mime-types构建的,并且实现了缓存机制以提高性能。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 本文探讨了如何利用数组来构建二叉树,并介绍了通过队列实现的二叉树层次遍历方法。通过具体的C++代码示例,详细说明了构建及打印二叉树的过程。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 本题要求计算从起点到终点所有最短路径的总权重,使用SPFA算法进行求解。 ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
author-avatar
风云再起2012668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有