1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<code>#include <iostream></code>
<code>#include <string.h></code>
<code>using</code> <code>namespace</code> <code>std;</code>
<code>int</code> <code>main()</code>
<code>{</code>
<code> </code><code>void</code> <code>encrytion_decrypt(</code><code>char</code> <code>input[],</code><code>int</code> <code>len);</code>
<code> </code><code>char</code> <code>input[10];</code>
<code> </code><code>cout<<</code><code>"Please input password:"</code><code>;</code>
<code> </code><code>cin>>input;</code>
<code> </code><code>int</code> <code>len;</code>
<code> </code><code>len=</code><code>strlen</code><code>(input);</code>
<code> </code><code>cout<<</code><code>"\n"</code><code><<</code><code>"password is:"</code><code><<input<<endl;</code>
<code> </code><code>encrytion_decrypt(input,len);</code>
<code> </code>
<code> </code><code>return</code> <code>0;</code>
<code>}</code>
<code>void</code> <code>encrytion_decrypt(</code><code>char</code> <code>input[],</code><code>int</code> <code>len) </code><code>//加密_解密函數</code>
<code> </code><code>// 仿射加密公式 : f(x)=3x+2;</code>
<code> </code><code>int</code> <code>i;</code>
<code> </code><code>char</code> <code>string[10];</code>
<code> </code><code>for</code><code>(i=0;i<len;i++)</code>
<code> </code><code>{</code>
<code> </code><code>int</code> <code>a;</code>
<code> </code><code>a=(input[i]-97)*3+2; </code><code>//加密</code>
<code> </code><code>if</code><code>(a>25) </code><code>//對照為0-25 mod為26</code>
<code> </code><code>{</code>
<code> </code><code>do</code> <code>//保證不超出域</code>
<code> </code><code>{</code>
<code> </code><code>a=a-26; </code>
<code> </code><code>}</code><code>while</code><code>(a>25);</code>
<code> </code><code>a=a+97; </code><code>//加密後得到的ASC碼;</code>
<code> </code><code>string[i]=(</code><code>char</code><code>)a;</code>
<code> </code><code>}</code>
<code> </code><code>else</code>
<code> </code><code>a=a+97;</code>
<code> </code><code>}</code>
<code> </code><code>cout<<</code><code>"encrytion password is:"</code><code>;</code>
<code> </code><code>printf</code><code>(</code><code>"%c"</code><code>,string[i]);</code>
<code> </code><code>cout<<endl;</code>
<code> </code><code>char</code> <code>res[10];</code>
<code> </code><code>for</code><code>(i=0;i<len;i++) </code><code>//解密過程</code>
<code> </code><code>int</code> <code>b;</code>
<code> </code><code>b=(string[i]-97)-2; </code>
<code>/* if(b==0)</code>
<code> </code><code>res[i]=(char)(b+97);</code>
<code> </code><code>continue;</code>
<code> </code><code>} */</code>
<code> </code><code>while</code><code>(b%3!=0)</code>
<code> </code><code>b=b+26;</code>
<code> </code><code>b=b/3;</code>
<code> </code><code>res[i]=(</code><code>char</code><code>)(b+97);</code>
<code> </code><code>cout<<</code><code>"keyword is:"</code><code>;</code>
<code> </code><code>printf</code><code>(</code><code>"%c"</code><code>,res[i]);</code>
<code></code>
本文轉自 nw01f 51CTO部落格,原文連結:http://blog.51cto.com/dearch/1748067,如需轉載請自行聯系原作者