C++ 入門指南 - Encrypt.cpp




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

沒有留言: