信息管理代码分析<一>登录密码
题解:这段代码的要求如下,输入一段字符密码(长度<=8)以二进制的形式存放在磁盘中,在输入时需要验证两次输入是否正确。
第二个,登录。从磁盘中读取这个文件,然后再输入密码,看两者是否相同。
登录密码需要用到的知识
1.getch()取字符无回显。
2.strcmp()比较两个字符串是否相等(相等返回0)
3.对输入字符的检测(包括对回车符的判定)
代码如下:
#include "stdio.h"
#include "conio.h"
#include "string.h"
char a[],b[];
void logon()
{
FILE *fp;
int i,j;
do{
for(i=;i< && ((a[i]=getch())!='\r');i++)
putchar('*');
printf("\n再次输入密码\n");
for(j=;j< && ((b[j]=getch())!='\r');j++)
putchar('*');
a[i]='\0';
b[j]='\0';
if(strcmp(a,b)!=)
printf("\n输入错误,请重新输入!\n");
else
break;
}while();
fp=fopen("password.dat","wb");
i=;
while(a[i])
{
putc(a[i],fp);
i++;
};
}
int main()
{
logon();
return ;
}
读取密码的注意点
假如二进制文件中存放一个密码,已知密码长度<=8,如何读取密码?
由于在后面需要比较,所以使用字符串来存储,但是字符串又需要一个结束符,所以字符串的最大长度为9,得到:char pwd[9];
而密码的长度分为两种情况:
第一种,密码长度<8
第二种:密码长度最大=8
而在外存中的密码存储形式为:***** -1 ^(共中-1为eof),现在根据while(!feof(fp))来判定,会多读取一个字符。
while(!feof(fp) && i<)
pwd[i++]=fgetc(fp);
如果密码长度正好等于8,则循环结束后,i=8;如果密码长度小于8,比如=3,则循环结束后,i=4,数组pwd获得的数据为:
* * * -1,而i当前又等于4,所以要把这个-1置为字符串结束符,得到:pwd[i-1]=0。
最终,在判定上分为两种可能
while(!feof(fp) && i<8)
{
pwd[i++]=fgetc(fp);
}
if(i==)pwd[i]='\0';
else pwd[i-]='\0';
登录密码检测
有一个特别的地方是如果输入3次错误则返回,模型如下:
void logon()
{
int n=;
do
{
..
if(密码不同)
{
..;
n--;
}
}while(n>);
..
}
信息管理代码分析<一>登录密码的更多相关文章
- 信息管理代码分析<二>读取二进制文件数据
first和end做为全局变量,分别指向链表的头和尾.建立链表的方式也比较简易,从二进制文件数据块中,依次从头到尾读取,每读取一个就建立一个结点. /*基本模型*/ EMP *emp1; while( ...
- 学生管理系统开发代码分析笔记:jsp+java bean+servlet技术
1 序言 学习java web的时候很渴望有一份完整的项目给我阅读,而网上的大部分项目拿过来都无法直接用,好不容易找到了一个学生管理系统也是漏洞百出.在此,我将边修改边学习这份代码,并且加上完全的注释 ...
- 集成TFS Build生成与SonarQube获取代码分析结果
软件项目在开发过程中,往往由于任务重.时间紧等原因忽略软件代码的质量和规范检查,只注重软件功能的开发和交付.等软件交付上线以后,由于代码质量导致的问题会耗费开发和运维人员的大量时间.研发表明,项目上线 ...
- 20155312 张竞予 Exp4 恶意代码分析
Exp4 恶意代码分析 目录 基础问题回答 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控. (2)如果 ...
- 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...
- 20164301 Exp4 恶意代码分析
Exp4 恶意代码分析 实验目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinte ...
- 2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 1.使用schtasks指令监控系统 2.使用sys ...
- 2018-2019-2 20165330《网络对抗技术》Exp4 恶意代码分析
目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验过程中遇到的问题 实验总结与体会 实验目的 监控你自己系统的运行状态,看有没有可疑的程序在运行 分析一个恶意软件,就分析Exp2或Exp3中 ...
- Https与Http,SSL,DevOps, 静态代码分析工具,RFID, SSH, 非对称加密算法(使用最广泛的一种是RSA), 数字签名, 数字证书
在URL前加https://前缀表明是用SSL加密的. 你的电脑与服务器之间收发的信息传输将更加安全. Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定. http和h ...
随机推荐
- import 语句用于导入从外部模块,另一个脚本等导出的函数,对象或原语。
import 语句用于导入从外部模块,另一个脚本等导出的函数,对象或原语. 注意:此功能目前无法在任何浏览器中实现.它在许多转换器中实现,例如 Traceur Compiler , Babel , R ...
- git命令图片
- OpenCv 人脸识别 基础
#include <opencv2\opencv.hpp> #include <iostream> using namespace std; int main() { // 摄 ...
- Gson转换时,Double转式化
package com.mall.core; import java.lang.reflect.Type; import java.text.DecimalFormat; import com.goo ...
- Windows10系统一键结束所有运行程序
当电脑及其卡顿的时候,想打开任务管理器关掉所有运行的程序的时候,也会变得及其困难.因此之前你如果有犀利的小程序设置,这都不会是问题. 1)空白处右键-新建-快捷方式 2)将下列代码复制到下列框中(注意 ...
- Spring RabbitMQ 延迟队列
一.说明 在实际业务场景中可能会用到延时消息发送,例如异步回调失败时的重发机制. RabbitMQ本身不具有延时消息队列的功能,但是可以通过rabbitmq-delayed-message-excha ...
- 解决selenium不支持firefox低版本的问题
解决selenium不支持firefox低版本的问题 在火狐浏览器升级后,突然发现webdriver运行脚本的时候不能调出火狐浏览器了,并报错WebDriverException:Message:'C ...
- PHP的zip、unzip类详解
1.打开一个ZIP包,用于读取.写入或修改 open(string $filename [, int $flags]) $filename - 文件名 $flags - 打开模式 ZIPARCHIVE ...
- Django的admin介绍
我们看到我们创建一个默认的django的项目,他在project的urls有一个admin的url的路径 我们访问这个路径,他是一个登陆框,需要输入用户名和密码 我们就需要创建这个用户名和密码,如果你 ...
- Unable to get the default Bean Validation factory
前几天看了一下教程 ,自己试着配置了一下web下的hibernate,悲剧的时,出错了提示下面: 信息: Hibernate Validator bean-validator-3.0-JBoss-4. ...