维吉尼亚密码 Vigenère Cipher
维吉尼亚密码(又译维热纳尔 Vigenère Cipher 密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。因为无聊,突然想写简单代码,所以就花了 15 分钟写了,代码见笑了{:10_282:} 。因为其加密过程简单,这里就不多做叙述了。維吉尼亞表格如下:
C++ 代码:#include <iostream>
#include <vector>
using namespace std;
// 維吉尼亞密码
class VigenèreCipher {
public:
string Ciphertext; // 密文
VigenèreCipher(string, string); // 构造函数
private:
string Plaintext, key; // 明文、密钥
vector<vector<char>> VigenèreTable; // 用來加密解密的維吉尼亞表格
};
VigenèreCipher::VigenèreCipher(string Plaintext, string key): Plaintext(Plaintext), key(key) {
// 初始化維吉尼亞表格
vector<char> temp;
for (int i = 0; i < 26; i++) {
VigenèreTable.push_back(temp);
for (int j = 'A'; j <= 'Z'; j++) {
VigenèreTable.push_back(j + i <= 'Z' ? j + i : ((j + i) % 'Z' + 'A' - 1));
}
}
// 对照維吉尼亞表格,开始加密
int m, n;
m = Plaintext.size();
n = key.size();
for (int i = 0; i < m; i++) {
Ciphertext.push_back(VigenèreTable) - 'A']) - 'A']);
}
}
int main() {
string Plaintext = "thequickbrownfoxjumpsoverthelazydog";
string key = "LION";
VigenèreCipher cipher(Plaintext, key);
cout
<< "明文:" << Plaintext << endl
<< "密钥:" << key << endl
<< "密文:" << cipher.Ciphertext << endl;
return 0;
} {:10_279:}{:10_279:}有讲解更好了 好复杂啊 支持 Cleementine 发表于 2022-10-20 11:33
支持
{:10_254:}
页:
[1]