鱼C论坛

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

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

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

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

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

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

Vigenère Square.png

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[i].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[toupper(key[i % n]) - 'A'][toupper(Plaintext[i]) - 'A']);
        }
}

int main() {
        string Plaintext = "thequickbrownfoxjumpsoverthelazydog";
        string key = "LION";
        VigenèreCipher cipher(Plaintext, key);
        cout
                << "明文:" << Plaintext << endl
                << "密钥:" << key << endl
                << "密文:" << cipher.Ciphertext << endl;
        return 0;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-15 18:47:12 | 显示全部楼层
有讲解更好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-15 21:23:17 From FishC Mobile | 显示全部楼层
好复杂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 11:33:42 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-20 18:56:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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