浅析加密算法二【Vigenere密码】
文章目录
- 一、简介
- 二、原理
- 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密码】相关推荐
- Vigenere密码(案例:Vigenere密码加密单词”explanation“,秘钥为”leg“。)
Vigenere密码 是什么 是使用一系列凯撒密码组成密码字母表的加密算法,属于 多表密码 的一种简单形式. 为什么 针对单表代替密码容易被频率分析法破解的缺点,人们提出多表代换密码,用一系列(两个以 ...
- 黑色沙漠服务器修改密码,黑色沙漠二次密码重置方法介绍 怎么重置二次密码...
黑色沙漠二次密码怎么重置?创立角色之后,可设定二次密码,使用二次密码可更安全的保护冒险家帐号.角色创立之后,在游戏内设定>帐号部分可设定二次密码,下面是小编整理的黑色沙漠二次密码怎么重置攻略,一 ...
- COM组件浅析(二) - 使用C#操作Adobe Illustrator
目录 Adobe 官方手册 使用C#编写Demo 1. 创建工程 2. 添加引用 3. 添加样例代码 4. 运行样例代码 尝试看得更清晰 在上一篇中, COM组件浅析(一) - 使用Java操作Ado ...
- Vigenere密码(维吉尼亚密码)c语言实现
Vigenere密码(维吉尼亚密码)c语言实现 简介 Vigenere密码是基于关键词的加密系统. 算法解释 Vigenere密码技术使用一个词组作为密钥,词组中的每一个字母都作为移位替换密码的密钥并 ...
- ARM系列之ARM Trustzone 技术浅析(二)——— ARMv7-A Processor modes registers 的安全扩展
ARM系列之ARM Trustzone 技术浅析(二) Processor modes Registers ARM 引入 Trustzone 技术,最重要的改动就是 CPU 架构的调整.ARM tru ...
- 浅析加密算法三【Playfair密码】
文章目录 一.简介 二.原理 三.例题 四.代码 一.简介 playfairplayfairplayfair 加密算法经莱昂·普莱费尔提倡在英国军地和政府使用. 它有一些不太明显的特征:密文的字母数一 ...
- 浅析加密算法七【RSA密码】
文章目录 一.简介 二.原理 2.1 加密过程 2.2 计算n的欧拉函数 2.3 逆元计算 2.4 高次幂的计算 2.5 举例 三.优缺点 3.1 优点: 3.2 缺点 四.题外话大质数判定 4.1 ...
- 浅析加密算法五【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盒子 ...
- 浅析加密算法一【凯撒密码】
文章目录 一.简介 二.原理 三.例题 四.代码 一.简介 在密码学中,恺撒密码(英语:Caesar cipher),或称 恺撒加密.恺撒变换.变换加密 ,是一种最简单且最广为人知的加密技术.它是一种 ...
最新文章
- AD rodc扩展报错
- 《Javascript入门学习全集》 Javascript学习第二季(实战4)
- 一个免费的css编辑器——Free CSS Toolbox
- iOS----------iPhone导出手机所有短信
- java bigdecimal min_java
- html 页面跳转 中文传值,两html页面之间的传值,并解决中文乱码问题
- 17 redis -key设计原则
- vector容器详细介绍
- BIOS中的UEFI和Legacy启动模式
- 优先队列练习(又是我大钟神)
- XTUOJ-1281-Cute String
- 用c++写bilibili番剧抢楼程序
- AliOS Things的SDK ESP8266 连接阿里生活物联网平台 配网失败解决方案
- 微信小程序(一)天气预报
- 前端必会的anime动画库
- 牛奶可乐经济学之Q3:为什么在高档餐厅,侍者的工资比助理厨师要高?
- P41 引用类型用法总结
- 自动化方法模拟Android手机点击、触屏事件
- Whitecoin区块链钱包高级功能使用命令
- AWE开幕在即,腾讯叮当将携智能朋友圈亮相
热门文章
- 连接远程计算机输入网络密码错误,win7
- 软件测试的概念与过程----学习软件测试前的思考
- Mac下PDF转EPS的方法
- 滴滴-小桔充电面试经验
- 抖音SEO源码系统怎么搭建?
- 联想微型计算机一体,联想发布两款 ThinkStation 微型主机:十代酷睿、容积仅 1L...
- 国产化之银河麒麟安装.NetCore-包管理器方式
- 埃斯顿工业机器人控制柜_埃斯顿多款新品重磅发布,携手TRIO,M.A.i、CLOOS为您呈现精彩纷呈的工博会!...
- android 移植游戏,Unity游戏移植到Android平台
- 可调电容器调谐调频原理介绍