鱼C论坛

 找回密码
 立即注册
查看: 4586|回复: 4

[技术交流] 维吉尼亚密码 Vigenère Cipher

[复制链接]
发表于 2022-4-15 12:48:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
维吉尼亚密码(又译维热纳尔 Vigenère Cipher 密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
因为无聊,突然想写简单代码,所以就花了 15 分钟写了,代码见笑了 。因为其加密过程简单,这里就不多做叙述了。維吉尼亞表格如下:

Vigenère Square.png

C++ 代码:
  1. #include <iostream>
  2. #include <vector>

  3. using namespace std;

  4. // 維吉尼亞密码
  5. class VigenèreCipher {
  6. public:
  7.         string Ciphertext; // 密文
  8.         VigenèreCipher(string, string); // 构造函数

  9. private:
  10.         string Plaintext, key; // 明文、密钥
  11.         vector<vector<char>> VigenèreTable; // 用來加密解密的維吉尼亞表格
  12. };

  13. VigenèreCipher::VigenèreCipher(string Plaintext, string key): Plaintext(Plaintext), key(key) {

  14.         // 初始化維吉尼亞表格
  15.         vector<char> temp;
  16.         for (int i = 0; i < 26; i++) {
  17.                 VigenèreTable.push_back(temp);
  18.                 for (int j = 'A'; j <= 'Z'; j++) {
  19.                         VigenèreTable[i].push_back(j + i <= 'Z' ? j + i : ((j + i) % 'Z' + 'A' - 1));
  20.                 }
  21.         }

  22.         // 对照維吉尼亞表格,开始加密
  23.         int m, n;
  24.         m = Plaintext.size();
  25.         n = key.size();
  26.         for (int i = 0; i < m; i++) {
  27.                 Ciphertext.push_back(VigenèreTable[toupper(key[i % n]) - 'A'][toupper(Plaintext[i]) - 'A']);
  28.         }
  29. }

  30. int main() {
  31.         string Plaintext = "thequickbrownfoxjumpsoverthelazydog";
  32.         string key = "LION";
  33.         VigenèreCipher cipher(Plaintext, key);
  34.         cout
  35.                 << "明文:" << Plaintext << endl
  36.                 << "密钥:" << key << endl
  37.                 << "密文:" << cipher.Ciphertext << endl;
  38.         return 0;
  39. }
复制代码

评分

参与人数 2荣誉 +3 鱼币 +3 贡献 +2 收起 理由
小甲鱼 + 2 + 2 + 2 鱼C有你更精彩^_^
andy大宝 + 1 + 1 无条件支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 18:47:12 | 显示全部楼层
有讲解更好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-15 21:23:17 From FishC Mobile | 显示全部楼层
好复杂啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 11:33:42 | 显示全部楼层
支持
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-20 18:56:58 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 08:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表