天天看點

簡單的加密與解密的實作---仿射密碼

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 &lt;iostream&gt;</code>

<code>#include &lt;string.h&gt;</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&lt;&lt;</code><code>"Please input password:"</code><code>;</code>

<code>    </code><code>cin&gt;&gt;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&lt;&lt;</code><code>"\n"</code><code>&lt;&lt;</code><code>"password is:"</code><code>&lt;&lt;input&lt;&lt;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&lt;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&gt;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&gt;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&lt;&lt;</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&lt;&lt;endl;</code>

<code>    </code><code>char</code> <code>res[10];</code>

<code>    </code><code>for</code><code>(i=0;i&lt;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&lt;&lt;</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,如需轉載請自行聯系原作者

繼續閱讀