维吉尼亚密码Java实现
维吉尼亚密码是一种古典密码,属于代换密码,而且是多表代换密码。
密文对应的字母数字=明文对应的字母数字+密钥对应的字母数字
例如:
明文abcde,密钥abcd,对应的密文就是bdfhf,第五个明文e对应的密钥值又是a了。
12345+1234=24685
话不多说,上代码。
//明文
String passcode = passcode;
//密钥
String vige = vige;
//密钥长度
int move = vige.length();//密文
String string = "";//加密过程
for(int i = 0; i < passcode.length(); i++){ char passwd = passcode.charAt(i);char passVige = vige.charAt(i%move);if(passwd >= 'A' && passwd <= 'Z'){ if(passVige >= 'A' && passVige <= 'Z'){passwd = (char) (((passwd-'A')+(passVige-'A'+1))%26 + 'A');} else if(passVige >= 'a' && passVige <= 'z'){passwd = (char) (((passwd-'A')+(passVige-'a'+1))%26 + 'A');}}else if(passwd >= 'a' && passwd <= 'z'){if(passVige >= 'A' && passVige <= 'Z'){passwd = (char) (((passwd-'a')+(passVige-'A'+1))%26 + 'a');} else if(passVige >= 'a' && passVige <= 'z'){passwd = (char) (((passwd-'a')+(passVige-'a'+1))%26 + 'a');}}string += passwd;}
//解密
for(int i = 0; i < passcode.length(); i++){ char passwd = passcode.charAt(i);char passVige = vige.charAt(i%move);if(passwd >= 'A' && passwd <= 'Z'){ if(passVige >= 'A' && passVige <= 'Z'){passwd = (char) (((passwd-'A')-(passVige-'A'+1)+26)%26 + 'A');} else if(passVige >= 'a' && passVige <= 'z'){passwd = (char) (((passwd-'A')-(passVige-'a'+1)+26)%26 + 'A');}}else if(passwd >= 'a' && passwd <= 'z'){if(passVige >= 'A' && passVige <= 'Z'){passwd = (char) (((passwd-'a')-(passVige-'A'+1)+26)%26 + 'a');} else if(passVige >= 'a' && passVige <= 'z'){passwd = (char) (((passwd-'a')-(passVige-'a'+1)+26)%26 + 'a');}}string += passwd;}
维吉尼亚密码Java实现相关推荐
- java维吉尼亚密码_维吉尼亚密码java完整版
package cn.longxuzi; import org.junit.Test; public class Chi_SquareUtils { private static final ICUt ...
- Java实现凯撒密码、维吉尼亚密码、双换位密码、RC4算法加密
文章目录 前言 一.凯撒密码 二.维吉尼亚密码 三.双换位密码 四.RC4算法加密 前言 本博文为信息安全与支付课程的课程作业. 一.凯撒密码 文件有:Caesar.java.输入文件input1.t ...
- 如何计算维吉尼亚密码?Java实现维吉尼亚密码的加密解密算法
文章目录 如何计算维吉尼亚密码? Java实现加密算法 Java实现解密算法 参考博客 如何计算维吉尼亚密码? 计算维吉尼亚密码有2种方式,一种是根据密码表查找,另一种是手动计算方法. 1.密码表查找 ...
- 维吉尼亚密码 算法 Java实现
输入一个字符串作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出维吉尼亚密码算法加密的密文. 假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密: TO BE OR ...
- 【密码学原理与实践】(四)维吉尼亚密码 符java代码实现
维吉尼亚密码(Vigenere Cipher) 转载请著明出处 无论是移位密码还是代换密码,一旦秘钥被选定,则每个字母对应的数字都被加密变换成对应的唯一数字.我们称这种为单表代换密码,而本篇讲的是一种 ...
- 维吉尼亚密码(Vigenère Cipher)
由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,即维吉尼亚密码,也称维热纳尔密码.维吉尼亚密码引入了"密钥"的概念,即根据密钥来决定 ...
- CTF杂项之“维吉尼亚密码”
Didi 在这次省赛上做到了一到维吉尼亚密码的题,以前没做过很懵,问了同学才知道 先上图: baby 是秘钥 glbe{pnf_njedc_js_ufjs_kmvrocz!} 是密文 在线解密 htt ...
- C++vigenere cipher维吉尼亚密码算法(附完整源码)
vigenere cipher维吉尼亚密码的算法 vigenere cipher维吉尼亚密码的完整源码(定义,实现,main函数测试) vigenere cipher维吉尼亚密码的完整源码(定义,实现 ...
- python编写加密程序_python编写的维吉尼亚密码加解密程序
维吉尼亚密码表 ============================================= #维吉尼亚密码 加密 key='helloworld' plaintext='whereis ...
最新文章
- js 将线性数据转为树形
- 【风之语】至贱城市之苏州
- 人人可以理解的区块链100问——区块链记录哪些信息
- 内存区域的划分和分配
- Windows下安装部署DBeaver连接clickhouse
- Python中的线程间通信
- spark集群详细搭建过程及遇到的问题解决(四)
- 三、Python第三课——Python中数字的用法及编码原则(Python禅意)
- [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)
- Python:程序员在每天不同时间发微信消息给女友
- Elasticsearch(一) ES之简介、倒排索引介绍以及 elasticsearch、kibana安装
- .net core2 单元测试
- 自定义异常 java_Java自定义异常–用户定义的异常
- CPU0704报错处理
- [Antergos] 大女儿调教日记
- 线程池的七个核心参数
- 概率论 | 联合熵、条件熵、互信息之间的表示、关系及大小
- JavaSE-part2
- Farmer John的故事——写给程序员们
- 将王者荣耀头像设置成和微信头像不一样
热门文章
- 视频领域 CLIP4clip:An Empirical Study of CLIP for End to End Video Clip Retrieval
- SAP 客户/供应商的到期日计算
- 程序员高考试卷!你满分了吗?
- Transformer合集2
- 令人眼花缭乱的“军刀”牌背包
- QT for Android TextToSpeech: speak failed: not bound to TTS engine 问题解决
- 全球及中国椰油酰胺丙基氧化胺行业研究及十四五规划分析报告
- 正点原子开拓者FPGA,程序固化下载到板子里面
- 【数据库】【Mysql - Workbench1】 :如何解决WPS/excel数据导入时Table Data Import报错问题?
- 【Flink】报错 No pooled slot available and request to ResourceManager for new slot failed