维吉尼亚密码是一种古典密码,属于代换密码,而且是多表代换密码。

密文对应的字母数字=明文对应的字母数字+密钥对应的字母数字
例如:
明文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实现相关推荐

  1. java维吉尼亚密码_维吉尼亚密码java完整版

    package cn.longxuzi; import org.junit.Test; public class Chi_SquareUtils { private static final ICUt ...

  2. Java实现凯撒密码、维吉尼亚密码、双换位密码、RC4算法加密

    文章目录 前言 一.凯撒密码 二.维吉尼亚密码 三.双换位密码 四.RC4算法加密 前言 本博文为信息安全与支付课程的课程作业. 一.凯撒密码 文件有:Caesar.java.输入文件input1.t ...

  3. 如何计算维吉尼亚密码?Java实现维吉尼亚密码的加密解密算法

    文章目录 如何计算维吉尼亚密码? Java实现加密算法 Java实现解密算法 参考博客 如何计算维吉尼亚密码? 计算维吉尼亚密码有2种方式,一种是根据密码表查找,另一种是手动计算方法. 1.密码表查找 ...

  4. 维吉尼亚密码 算法 Java实现

    输入一个字符串作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出维吉尼亚密码算法加密的密文. 假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密: TO BE OR ...

  5. 【密码学原理与实践】(四)维吉尼亚密码 符java代码实现

    维吉尼亚密码(Vigenere Cipher) 转载请著明出处 无论是移位密码还是代换密码,一旦秘钥被选定,则每个字母对应的数字都被加密变换成对应的唯一数字.我们称这种为单表代换密码,而本篇讲的是一种 ...

  6. 维吉尼亚密码(Vigenère Cipher)

    由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,即维吉尼亚密码,也称维热纳尔密码.维吉尼亚密码引入了"密钥"的概念,即根据密钥来决定 ...

  7. CTF杂项之“维吉尼亚密码”

    Didi 在这次省赛上做到了一到维吉尼亚密码的题,以前没做过很懵,问了同学才知道 先上图: baby 是秘钥 glbe{pnf_njedc_js_ufjs_kmvrocz!} 是密文 在线解密 htt ...

  8. C++vigenere cipher维吉尼亚密码算法(附完整源码)

    vigenere cipher维吉尼亚密码的算法 vigenere cipher维吉尼亚密码的完整源码(定义,实现,main函数测试) vigenere cipher维吉尼亚密码的完整源码(定义,实现 ...

  9. python编写加密程序_python编写的维吉尼亚密码加解密程序

    维吉尼亚密码表 ============================================= #维吉尼亚密码 加密 key='helloworld' plaintext='whereis ...

最新文章

  1. js 将线性数据转为树形
  2. 【风之语】至贱城市之苏州
  3. 人人可以理解的区块链100问——区块链记录哪些信息
  4. 内存区域的划分和分配
  5. Windows下安装部署DBeaver连接clickhouse
  6. Python中的线程间通信
  7. spark集群详细搭建过程及遇到的问题解决(四)
  8. 三、Python第三课——Python中数字的用法及编码原则(Python禅意)
  9. [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)
  10. Python:程序员在每天不同时间发微信消息给女友
  11. Elasticsearch(一) ES之简介、倒排索引介绍以及 elasticsearch、kibana安装
  12. .net core2 单元测试
  13. 自定义异常 java_Java自定义异常–用户定义的异常
  14. CPU0704报错处理
  15. [Antergos] 大女儿调教日记
  16. 线程池的七个核心参数
  17. 概率论 | 联合熵、条件熵、互信息之间的表示、关系及大小
  18. JavaSE-part2
  19. Farmer John的故事——写给程序员们
  20. 将王者荣耀头像设置成和微信头像不一样

热门文章

  1. 视频领域 CLIP4clip:An Empirical Study of CLIP for End to End Video Clip Retrieval
  2. SAP 客户/供应商的到期日计算
  3. 程序员高考试卷!你满分了吗?
  4. Transformer合集2
  5. 令人眼花缭乱的“军刀”牌背包
  6. QT for Android TextToSpeech: speak failed: not bound to TTS engine 问题解决
  7. 全球及中国椰油酰胺丙基氧化胺行业研究及十四五规划分析报告
  8. 正点原子开拓者FPGA,程序固化下载到板子里面
  9. 【数据库】【Mysql - Workbench1】 :如何解决WPS/excel数据导入时Table Data Import报错问题?
  10. 【Flink】报错 No pooled slot available and request to ResourceManager for new slot failed