
Encrypt.cpp 的程式原始碼如下
#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;
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:Encrypt.cpp
功能:示範 C++ 程式
作者:張凱慶
時間:西元 2012 年 10 月 */您可以繼續參考
範例程式碼
相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁
參考資料
C++ reference
Qt Developer Network
沒有留言:
張貼留言