C++ 入門指南 - Encrypt.cpp




Encrypt.cpp 的程式原始碼如下

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <cstdlib>
#include <ctime>
 
#include "Encrypt.h"
 
Encrypt::Encrypt() {
    setoArray();
    setcArray();   
}
 
void Encrypt::setoArray() {
    string s;
    char c = 'a';
    int i;
    for (i = 0; i < N; i++) {
        s += c++;
    }
     
    oArray = s;
}
     
void Encrypt::setcArray() {
     
    srand(time(0));
     
    int a = 0;
    int b = 0;
    while (a % 2 == 0) {
        a = rand() % 10;
        b = rand() % 10;
    }
     
    int x, y, m;
    char r;
    char c = 'a';
    string s;
    int i;
    for (i = 0; i < N; i++) {
        x = c;
        y = x * a + b;
        m = y % N;
        s += (char) m + DIFF;
        c++;
    }
     
    cArray = s;
}
 
void Encrypt::setcArray(string s) {
    cArray = s;
}
     
string Encrypt::getoArray() {
    return oArray;
}
     
string Encrypt::getcArray() {
    return cArray;
}
 
string Encrypt::toEncode(string s) {
    char c;
    string r;
    int i, m;
    for (i = 0; i < s.size(); i++) {
        if (s.at(i) >= 97 && s.at(i) <= 122) {
            c = s.at(i);
            m = c - 97;
            r += getcArray().at(m);
        }
        else {
            r += s.at(i);
        }
    }
     
    return r;
}
 
string Encrypt::toDecode(string s) {
    int i, j;
    string r;
    for (i = 0; i < s.size(); i++) {
        if (s.at(i) >= 97 && s.at(i) <= 122) {
            for (j = 0; j < N; j++) {
                if (s.at(i) == getcArray().at(j)) {
                    r += (char) j + DIFF;
                    break;
                }
            }
        }
        else {
            r += s.at(i);
        }
    }
     
    return r;
}
 
/* 《程式語言教學誌》的範例程式
    檔名:Encrypt.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2012 年 10 月 */


您可以繼續參考
範例程式碼


相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁


參考資料
C++ reference
Qt Developer Network

沒有留言: