c语⾔实现对密码(字符串)进⾏加密,并解密  1/**习惯把密码明⽂存在本地⽂件中,这个⼩程序可以把存的密码以密⽂形式保存**/
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <time.h>
6int chartoasc(char c);
7int xor(int i);
8char asctochar(int a);
9int rand_num();
10int encrypt(const char *org_pass,char *new_pass);
11int decrypt(const char *new_pass,char *org_pass);
12
13int main(int argc,char *argv[])
14 {
15if(argc!=2)
16    {
17        printf("参数输⼊有误!\n");密码字符串是什么
18        printf("usage:<pass flag >\nflag=1:加密;flag=2:解密\n");
19return -1;
20    }
21int flag = 0;
22int len = 0;
23int i = 0;
24int ret = 0;
25char password[20];
26char new_pass[50];
27char org_pass[50];
28int test1 = 0;
29int test2 = 0;
30char test3 = 0;
31char *p = NULL;
32
33    bzero(password,sizeof(password));
34    bzero(new_pass,sizeof(new_pass));
35    bzero(org_pass,sizeof(org_pass));
36
37    flag = atoi(argv[1]);
38if(flag == 1)
39    {
40        printf("请输⼊需要加密的密码:");
41        scanf("%s",password);
42        ret = encrypt(password,&new_pass);
43if(ret)
44        {
45            printf("密码加密失败!\n");
46return -1;
47        }
48        printf("新密码[%s]\n",new_pass);
49    }
50else if(flag ==2)
51    {
52        printf("请输⼊需要解密的密码:");
53        scanf("%s",password);
54        ret = decrypt(password,&org_pass);
55if(ret)
56        {
57            printf("获取原密码失败!\n");
58return -1;
59        }
60        printf("原密码[%s]\n",org_pass);
61    }
62else
63    {
64        printf("加密标志输⼊如有误!\n");
65return -1;
66    }
67
68return0;
69 }
70
71/**将字符转换为ASCII值**/
72int chartoasc(char c)
73 {
74int i= 0;
75    i = c;
76return i;
77 }
78
79/**将ASCII进⾏异或运算,产⽣新的ASCII值**/
80int xor(int i)
81 {
82int m = 27;
83int result = 0;
84if(59==i || 100==i)
85    {
86return i;
87    }
88    result = i^m;
89return result;
90 }
91
92/**将ASCII值转换为字符**/
93char asctochar(int a)
94 {
95char c;
96    c = a;
97return c;
98 }
99
100/**输⼊原密码产⽣新的密码**/
101int encrypt(const char *org_pass,char *new_pass) 102 {
103char org_password[50];
104char new_password[50];
105int len = 0;
106int i = 0;
107int asc = 0 ;
108char ch = 0;
109int x = 0;
110
111    bzero(org_password,sizeof(org_password)); 112    bzero(new_password,sizeof(new_password)); 113    strcpy(org_password, org_pass);
114    len = strlen(org_password);
115for(i=0 ; i<len ; i++)
116    {
117        ch = org_password[i];
118        asc = chartoasc(ch);
119        x = xor(asc);
120        new_password[i] = asctochar(x);
121    }
122    strcpy(new_pass,new_password);
123
124return0;
125 }
126
127/**输⼊加密后的密码返回原密码**/
128int decrypt(const char *new_pass,char *org_pass) 129 {
130char new_password[50];
131char org_password[50];
132char ch;
133int a = -1;
134int len =0;
135int i=0;
136int x = -1;
137
138    bzero(new_password,sizeof(new_password)); 139    bzero(org_password,sizeof(org_password)); 140
141    strcpy(new_password,new_pass);
142    len = strlen(new_password);
143for(i=0;i<len;i++)
144    {
145        ch = new_password[i];
146        a = chartoasc(ch);
147        x = xor(a);
148        org_password[i]=asctochar(x);
149    }
150    strcpy(org_pass,org_password);
151
152return0;
153 }
后续考虑实现界⾯程序的改进。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。