文章目录

  • 一、简介
  • 二、原理
    • 2.1 公式加密
    • 2.2 查表加密
  • 三、例题
  • 四、代码

一、简介

维吉尼亚密码(又译 维热纳尔密码 )是使用一系列凯撒密码组成密码字母表的加密算法,属于 多表密码 的一种简单形式。

维吉尼亚密码曾多次被发明。该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso)中。然而,后来在19世纪时被误传为是法国外交官布莱斯·德·维吉尼亚(Blaise De Vigenère)所创造,因此现在被称为“维吉尼亚密码”。

维吉尼亚密码以其简单易用而著称,同时初学者通常难以破解,因而又被称为“不可破译的密码”(法语:le chiffre indéchiffrable)。这也让很多人使用维吉尼亚密码来加密的目的就是为了将其破解。

二、原理

Vigengere密码使用一个词组作为密钥,第一个密钥字母加密明文的第一个字母,第二个密钥字母加密明文的第二个字母,等所有密钥字母使用完后,密钥又再循环使用。

  • 第一步可以先将密钥的长度拓展到(或者缩减到)和明文 长度一样
  • 第二步开始加密,加密的方式一般分为两种
    • ①公式加密
    • ②查表加密

2.1 公式加密

对于第一个公式加密,我们可以如下操作:
加密: C i = P i + K i ( m o d 26 ) C_i = P_i + K_i (mod \ 26) Ci​=Pi​+Ki​(mod 26)
解密: P i = C i − K i ( m o d 26 ) P_i = C_i - K_i (mod \ 26) Pi​=Ci​−Ki​(mod 26)
其中的 C i C_i Ci​ 表示的是密文的第 i i i 个字母, P i P_i Pi​ 表示的是明文的第 i i i 个字母, K i K_i Ki​ 表示的是密钥的第 i i i 个字母

例如:

P = vigenere
K = key

(a的位置对应的是0,其余的以此类推)
得到:

P i P_i Pi​ v i g e n e r e
K i K_i Ki​ k e y k e y k e
C i C_i Ci​ f m e o r c a i

2.2 查表加密

对于每一种加密我们在一个字母表中找到我们 P i P_i Pi​ 和 K i K_i Ki​ 对应的 C i C_i Ci​ 即可,我们可以先用一个二维数组来存储这个字母表,然后我们将每一个字母转化为一个数字,作为查找的下标,然后就能轻松的实现加密的过程,解密的话就反过来就好

例如:
给定字母表:

给出查询的明文 SWPUACM 然后给出密钥:MANGATA
那么我们就能构造出来

P i P_i Pi​ S W P U A C M
K i K_i Ki​ M A N G A T A
C i C_i Ci​ E W C A A V M

三、例题

题目链接: http://acm.mangata.ltd/p/P2030

四、代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 26
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fvoid Vigenere(string P,string K){string C = "";int len1 = P.size(),len2 = K.size();for(int i = 0; i < len1; ++i) {int pos = ((P[i]-'A') + (K[i % len2] - 'A')) % mod;C += char('A' + pos);}cout<<"The Vigenere ciphertext = "<<C<<endl;
}int main()
{string P,K;cout<<"Please input the plaintext"<<endl;//Encryption keycin>>P;cout<<"Please input the Encryption key"<<endl;cin>>K;transform(P.begin(),P.end(),P.begin(), ::toupper);transform(K.begin(),K.end(),K.begin(), ::toupper);Vigenere(P,K);return 0;
}

浅析加密算法二【Vigenere密码】相关推荐

  1. Vigenere密码(案例:Vigenere密码加密单词”explanation“,秘钥为”leg“。)

    Vigenere密码 是什么 是使用一系列凯撒密码组成密码字母表的加密算法,属于 多表密码 的一种简单形式. 为什么 针对单表代替密码容易被频率分析法破解的缺点,人们提出多表代换密码,用一系列(两个以 ...

  2. 黑色沙漠服务器修改密码,黑色沙漠二次密码重置方法介绍 怎么重置二次密码...

    黑色沙漠二次密码怎么重置?创立角色之后,可设定二次密码,使用二次密码可更安全的保护冒险家帐号.角色创立之后,在游戏内设定>帐号部分可设定二次密码,下面是小编整理的黑色沙漠二次密码怎么重置攻略,一 ...

  3. COM组件浅析(二) - 使用C#操作Adobe Illustrator

    目录 Adobe 官方手册 使用C#编写Demo 1. 创建工程 2. 添加引用 3. 添加样例代码 4. 运行样例代码 尝试看得更清晰 在上一篇中, COM组件浅析(一) - 使用Java操作Ado ...

  4. Vigenere密码(维吉尼亚密码)c语言实现

    Vigenere密码(维吉尼亚密码)c语言实现 简介 Vigenere密码是基于关键词的加密系统. 算法解释 Vigenere密码技术使用一个词组作为密钥,词组中的每一个字母都作为移位替换密码的密钥并 ...

  5. ARM系列之ARM Trustzone 技术浅析(二)——— ARMv7-A Processor modes registers 的安全扩展

    ARM系列之ARM Trustzone 技术浅析(二) Processor modes Registers ARM 引入 Trustzone 技术,最重要的改动就是 CPU 架构的调整.ARM tru ...

  6. 浅析加密算法三【Playfair密码】

    文章目录 一.简介 二.原理 三.例题 四.代码 一.简介 playfairplayfairplayfair 加密算法经莱昂·普莱费尔提倡在英国军地和政府使用. 它有一些不太明显的特征:密文的字母数一 ...

  7. 浅析加密算法七【RSA密码】

    文章目录 一.简介 二.原理 2.1 加密过程 2.2 计算n的欧拉函数 2.3 逆元计算 2.4 高次幂的计算 2.5 举例 三.优缺点 3.1 优点: 3.2 缺点 四.题外话大质数判定 4.1 ...

  8. 浅析加密算法五【DES密码】

    文章目录 一.简介 二.原理 2.1 明文加密流程 2.2 密钥生成流程 2.3 初始置换IP 2.4 F轮变换 2.4.1 拓展置换 2.4.2 异或运算 2.4.3 S盒子压缩 2.4.4 P盒子 ...

  9. 浅析加密算法一【凯撒密码】

    文章目录 一.简介 二.原理 三.例题 四.代码 一.简介 在密码学中,恺撒密码(英语:Caesar cipher),或称 恺撒加密.恺撒变换.变换加密 ,是一种最简单且最广为人知的加密技术.它是一种 ...

最新文章

  1. AD rodc扩展报错
  2. 《Javascript入门学习全集》 Javascript学习第二季(实战4)
  3. 一个免费的css编辑器——Free CSS Toolbox
  4. iOS----------iPhone导出手机所有短信
  5. java bigdecimal min_java
  6. html 页面跳转 中文传值,两html页面之间的传值,并解决中文乱码问题
  7. 17 redis -key设计原则
  8. vector容器详细介绍
  9. BIOS中的UEFI和Legacy启动模式
  10. 优先队列练习(又是我大钟神)
  11. XTUOJ-1281-Cute String
  12. 用c++写bilibili番剧抢楼程序
  13. AliOS Things的SDK ESP8266 连接阿里生活物联网平台 配网失败解决方案
  14. 微信小程序(一)天气预报
  15. 前端必会的anime动画库
  16. 牛奶可乐经济学之Q3:为什么在高档餐厅,侍者的工资比助理厨师要高?
  17. P41 引用类型用法总结
  18. 自动化方法模拟Android手机点击、触屏事件
  19. Whitecoin区块链钱包高级功能使用命令
  20. AWE开幕在即,腾讯叮当将携智能朋友圈亮相

热门文章

  1. 连接远程计算机输入网络密码错误,win7
  2. 软件测试的概念与过程----学习软件测试前的思考
  3. Mac下PDF转EPS的方法
  4. 滴滴-小桔充电面试经验
  5. 抖音SEO源码系统怎么搭建?
  6. 联想微型计算机一体,联想发布两款 ThinkStation 微型主机:十代酷睿、容积仅 1L...
  7. 国产化之银河麒麟安装.NetCore-包管理器方式
  8. 埃斯顿工业机器人控制柜_埃斯顿多款新品重磅发布,携手TRIO,M.A.i、CLOOS为您呈现精彩纷呈的工博会!...
  9. android 移植游戏,Unity游戏移植到Android平台
  10. 可调电容器调谐调频原理介绍