密码表管理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码表管理系统

1设计目的、要求

(1) 可以存储用户名及密码等密码表信息

(2) 采用一种加密算法将密码表信息加密

(3) 可以添加、删除、修改已知密码表中的信息

(4) 可以检索密码信息

2设计原理

本程序采用维吉尼亚(vigenere)密码体制对用户名和密码等密码表信息进行加密。

3采用软件、设备

Microsoft Visual Studio 2010

4设计内容

1、vigenere cipher 的加密规则:

1)找到一个关键字作为密钥(本程序使用密码为关键字);

2)根据vigenere table 找出对应的密文。

2、vigenere cipher 的加密原理:

1)vigenere 代换表:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

BCDEFGHIJKLMNOPQRSTUVWXYZA

CDEFGHIJKLMNOPQRSTUVWXYZAB

DEFGHIJKLMNOPQRSTUVWXYZABC

EFGHIJKLMNOPQRSTUVWXYZABCD

FGHIJKLMNOPQRSTUVWXYZABCDE

GHIJKLMNOPQRSTUVWXYZABCDEF

HIJKLMNOPQRSTUVWXYZABCDEFG

IJKLMNOPQRSTUVWXYZABCDEFGH

JKLMNOPQRSTUVWXYZABCDEFGHI

KLMNOPQRSTUVWXYZABCDEFGHIJ

LMNOPQRSTUVWXYZABCDEFGHIJK

MNOPQRSTUVWXYZABCDEFGHIJKL

NOPQRSTUVWXYZABCDEFGHIJKLM

OPQRSTUVWXYZABCDEFGHIJKLMN

PQRSTUVWXYZABCDEFGHIJKLMNO

QRSTUVWXYZABCDEFGHIJKLMNOP

RSTUVWXYZABCDEFGHIJKLMNOPQ

STUVWXYZABCDEFGHIJKLMNOPQR

TUVWXYZABCDEFGHIJKLMNOPQRS

UVWXYZABCDEFGHIJKLMNOPQRST

VWXYZABCDEFGHIJKLMNOPQRSTU

WXYZABCDEFGHIJKLMNOPQRSTUV

XYZABCDEFGHIJKLMNOPQRSTUVW

YZABCDEFGHIJKLMNOPQRSTUVWX

ZABCDEFGHIJKLMNOPQRSTUVWXY

2)加密过程很简单,就是给定密钥字母x和明文字母y,密文字母是位于x行和y 列的那个字母。这样就决定了加密一条消息需要与消息一样长的密钥字符串。

(本程序较简单采用的密钥字符串与密码相同)

例:比如密钥词是deceptive,消息是“we are discovered save yourself”,那么

加密过程如下:

deceptivedeceptivedeceptive(密钥字符串)

wearediscoveredsaveyourself(消息)

ZICVTWQNGRZGVTWAVZHCQYGLMGJ(密文)

密文中的第一个字母“Z”是怎么得来的?从Vigenere代换表中,以密钥字符串

中的“d”为行,消息中的“w”为列的那个字母就是“Z”了。

3)本程序可以实现对用户名和密码等密码表信息的存储、添加、修改、删除。

程序代码:

#include

#include

#define MAX 100

static int square[27][27];

char * vigenere(char key[],char word[]);

int set(struct Admin admin[],char *name);

int landing(struct Admin admin[]);

int resultadd(struct Admin admin[]);

int resultres(struct Admin admin[]);

int Delete(struct Admin admin[]);

int update_m(struct Admin admin[]);

int Search_m(struct Admin admin[]);

using namespace std;

struct Admin{

char name[15];

char code[20];

};

int Count=0;//全局变量记录用户数

void main()

{

struct Admin admin[8];

int n=1,m;

char name[20];

for(int i=0;i

{

for(int j=0;j<15;j++)

{

admin[i].name[j]='\0';

}

}

for(int i=0;i

{

for(int j=0;j<20;j++)

{

admin[i].code[j]='\0';

}

}

while(n)

{

cout<<"\t\t****************************************\n";

cout<<"\t\t** 用户登录系统**\n";

cout<<"\t\t** **\n";

cout<<"\t\t** 1:建立**\n";

cout<<"\t\t** 2:登陆**\n";

cout<<"\t\t** 3:加密**\n";

cout<<"\t\t** 4:解密**\n";

cout<<"\t\t** 5.查找**\n";

cout<<"\t\t** 6:修改**\n";

cout<<"\t\t** 7:删除**\n";

cout<<"\t\t** 0:退出**\n";

cout<<"\t\t****************************************\n";

cout<<"\t\t请选择:";

cin>>m;

switch(m)

{

case 1: set(admin,name);break;

case 2: landing(admin); break;

case 3: resultadd(admin);break;

case 4: resultres(admin);break;

case 5: Search_m(admin);break;

case 6: update_m(admin);break;

case 7: Delete(admin);break;

case 0: n=0;break;

}

}

}

相关文档
最新文档