标题:[原创]密码管理器源代码
只看楼主
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
结帖率:100%
 问题点数:0 回复次数:17 
[原创]密码管理器源代码

/*SK-CHINA 密码管理器 0.0.1 BY S.K*/
/*写于2007.2.16 晚上 于家中 */
#include<stdio.h>
#include<conio.h>
#include<string.h>

/*二进制数据文件结构*/
typedef struct {
char name[30];
char password[30];
} password;

int main(void) {
int i;
password s[100];
unsigned char num=0;
FILE *input,*output;

printf("正在装入数据...");
if((input=fopen("data","rb"))!=NULL) {
fread(&num,sizeof(unsigned char),1,input);
for(i=0;i<num;i++)
fread(&s[i],sizeof(password),1,input);
fclose(input);
printf("\r数据装入完毕\n");
} else {
printf("\r无法找到已有的数据,程序将新建一个文件\n");
output=fopen("data","wb");
fwrite(&num,sizeof(unsigned char),1,output);
fclose(output);
}
while(1) {
char c;
char a[30];
int t;
printf("--------------------------------\n");
printf("SK-CHINA 密码管理器 0.0.1 BY S.K\n");
printf("--------------------------------\n");
printf("A:添加数据 C:更改数据 D:删除数据\n");
printf("F:查找数据 S:显示数据 E:保存退出\n");
printf("请输入你希望的操作:");
scanf("%c",&c);
clrscr();
switch(c) {
case 'A': { printf("请输入密码名:");
scanf("%s",s[num].name);
printf("请输入密码:");
scanf("%s",s[num].password);
num++;
break;
}
case 'F': { printf("请选择查找数据的方式:\n");
printf("1.密码记录号 2.密码名 --->");
scanf("%d",&t);
switch(t) {
case 1: { printf("请输入密码记录号:");
scanf("%d",&i);
printf("密码记录号 密码名 密码\n");
printf("%-12d%-32s%-30s\n",i,s[i].name,s[i].password);
printf("按任意键继续");
getch();
break;
}
case 2: { printf("请输入密码名:");
scanf("%s",a);
printf("密码记录号 密码名 密码\n");
for(i=0;i<num;i++) {
if(strcmp(a,s[i].name)==0)
printf("%-12d%-32s%-30s\n",i,s[i].name,s[i].password);
}
printf("按任意键继续");
getch();
break;
}
}
break;
}
case 'D': { printf("请输入密码记录号:");
scanf("%d",&t);
if(t>-1 && t<num)
num--;
else {
printf("密码记录号不存在,按任意键继续\n");
getch();
break;
}
for(i=t;i<num;i++)
s[i]=s[i+1];
break;
}
case 'C': { printf("请输入密码记录号:");
scanf("%d",&t);
if(!(t>-1 && t<num)) {
printf("密码记录号不存在,按任意键继续\n");
getch();
break;
}
printf("请输入更改后的密码名:");
scanf("%s",s[t].name);
printf("请输入更改后的密码:");
scanf("%s",s[t].password);
break;
}
case 'S': { printf("密码记录号 密码名 密码\n");
for(i=0;i<num;i++)
printf("%-12d%-32s%-30s\n",i,s[i].name,s[i].password);
printf("\n");
printf("按任意键继续");
getch();
break;
}
case 'E': { printf("是否保存更改?(1.保存 2.不存)");
scanf("%d",&t);
if(t==1) {
output=fopen("data","wb");
fwrite(&num,sizeof(unsigned char),1,output);
for(i=0;i<num;i++)
fwrite(&s[i],sizeof(password),1,output);
fclose(output);
}
printf("按任意键退出");
getch();
return 0;
}
}
}
return 0;
}
转载请写上在我的博客上的该文章http://bccnwl.blog.hexun.com/7807917_d.html

搜索更多相关主题的帖子: 密码管理器 源代码 二进制 input 
2007-02-12 20:35
多维数组
Rank: 1
等 级:新手上路
帖 子:238
专家分:0
注 册:2006-8-16
得分:0 
说实话---太不安全了

有事发邮件:tzp_1210@
2007-02-13 09:51
alading664
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-1-25
得分:0 
请问楼主,NUM为什么要定义成unsigned char?
2007-02-14 23:01
ppm88
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1414
专家分:30
注 册:2007-1-28
得分:0 
偶去编译运行下。。玩玩!

辛苦啦。。楼主
2007-02-14 23:12
柒鹰旅
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:3479
专家分:0
注 册:2006-5-7
得分:0 
在LINUX下,用GCC编译不通过。

我们除了抗议,抵制日货...我们还能做什么? http://blog./user13/61819/index.shtml
2007-02-15 00:37
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 
以下是引用alading664在2007-2-14 23:01:25的发言:
请问楼主,NUM为什么要定义成unsigned char?

这样你可以输入abc呀!

如果是数字的话,比如6位的密码,那你猜中的概率是1/(10)^6

如果可以输入字母和数字的话,那猜中的概率1/(36)^6

而且在密码中应该是无符号的吧!


自我放逐。。。
2007-02-15 12:14
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
得分:0 

我也觉得不安全,至少存入文件的密码应该经过加密处理~


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-02-19 10:20
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 

感觉上在输入方面很不安全。


谁有强殖装甲第二部,可以Q我460054868
2007-02-19 12:42
守望♂幸福
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-4-25
得分:0 
安全性貌似不很强哦`如果用来储存

偶是偶滴偶像!!~ QQ:375490156
2007-02-20 23:34
xutaoneu
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-2-12
得分:0 
小心溢出。
2007-02-22 11:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-120762-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.385315 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved