您的位置:首页 > 编程语言 > C语言/C++

c语言实现对密码(字符串)进行加密,并解密

2017-10-31 11:38 459 查看
/**习惯把密码明文存在本地文件中,这个小程序可以把存的密码以密文形式保存**/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int chartoasc(char c);
int xor(int i);
char asctochar(int a);
int rand_num();
int encrypt(const char *org_pass,char *new_pass);
int decrypt(const char *new_pass,char *org_pass);

int main(int argc,char *argv[])
{
if(argc!=2)
{
printf("参数输入有误!\n");
printf("usage:<pass flag >\nflag=1:加密;flag=2:解密\n");
return -1;
}
int flag = 0;
int len = 0;
int i = 0;
int ret = 0;
char password[20];
char new_pass[50];
char org_pass[50];
int test1 = 0;
int test2 = 0;
char test3 = 0;
char *p = NULL;

bzero(password,sizeof(password));
bzero(new_pass,sizeof(new_pass));
bzero(org_pass,sizeof(org_pass));

flag = atoi(argv[1]);
if(flag == 1)
{
printf("请输入需要加密的密码:");
scanf("%s",password);
ret = encrypt(password,&new_pass);
if(ret)
{
printf("密码加密失败!\n");
return -1;
}
printf("新密码[%s]\n",new_pass);
}
else if(flag ==2)
{
printf("请输入需要解密的密码:");
scanf("%s",password);
ret = decrypt(password,&org_pass);
if(ret)
{
printf("获取原密码失败!\n");
return -1;
}
printf("原密码[%s]\n",org_pass);
}
else
{
printf("加密标志输入如有误!\n");
return -1;
}

return 0;
}

/**将字符转换为ASCII值**/
int chartoasc(char c)
{
int i= 0;
i = c;
return i;
}

/**将ASCII进行异或运算,产生新的ASCII值**/
int xor(int i)
{
int m = 27;
int result = 0;
if(59==i || 100==i)
{
return i;
}
result = i^m;
return result;
}

/**将ASCII值转换为字符**/
char asctochar(int a)
{
char c;
c = a;
return c;
}

/**输入原密码产生新的密码**/
int encrypt(const char *org_pass,char *new_pass)
{
char org_password[50];
char new_password[50];
int len = 0;
int i = 0;
int asc = 0 ;
char ch = 0;
int x = 0;

bzero(org_password,sizeof(org_password));
bzero(new_password,sizeof(new_password));
strcpy(org_password, org_pass);
len = strlen(org_password);
for(i=0 ; i<len ; i++)
{
ch = org_password[i];
asc = chartoasc(ch);
x = xor(asc);
new_password[i] = asctochar(x);
}
strcpy(new_pass,new_password);

return 0;
}

/**输入加密后的密码返回原密码**/
int decrypt(const char *new_pass,char *org_pass)
{
char new_password[50];
char org_password[50];
char ch;
int a = -1;
int len =0;
int i=0;
int x = -1;

bzero(new_password,sizeof(new_password));
bzero(org_password,sizeof(org_password));

strcpy(new_password,new_pass);
len = strlen(new_password);
for(i=0;i<len;i++)
{
ch = new_password[i];
a = chartoasc(ch);
x = xor(a);
org_password[i]=asctochar(x);
}
strcpy(org_pass,org_password);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: