输入一个字符串作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出维吉尼亚密码算法加密的密文。

假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:

TO BE OR NOT TO BE THAT IS THE QUESTION

当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:

密钥:RELAT IONSR ELATI ONSRE LATIO NSREL

明文:TOBEO RNOTT OBETH ATIST HEQUE STION

密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY

import java.util.Scanner;
public class WJNY{private Scanner scan;public void jiami() {System.out.print("please enter the key:");scan = new Scanner(System.in);String key = scan.nextLine();System.out.print("please enter the plaintext:");Scanner scan = new Scanner(System.in);String pt = scan.nextLine();scan.close();char[] k = new char[key.length()];//建立存储密钥的数组char[] c = new char[pt.length()];//建立存储明文的数组System.out.println("ciphertext:");for (int i = 0; i < pt.length(); i++) {c[i] = pt.charAt(i);//把明文的字符赋给数组c[]k[i] = key.charAt(i);//把密钥的字符赋给数组k[]int temp = k[i] - 65;//计算出密钥和字符A的ascii码差值if (c[i] + temp > 90) {c[i] -= (26 - temp);} else {c[i] += temp;}System.out.print(c[i]);}System.exit(0);}public static void main(String[] args){WJNY wjny=new WJNY();wjny.jiami();}
}

维吉尼亚密码 算法 Java实现相关推荐

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

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

  2. 信息安全——维吉尼亚密码算法(C++实现)

    信息安全导论课程学习的实验一,维吉尼亚密码算法C++的实现. 维吉尼亚密码算法是一种代换密码算法,直观上来说,密钥一般短于明文长度,因此加密时需要将明文根据密钥长度进行分组,每一组明文根据密钥对应(0 ...

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

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

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

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

  5. RSA算法与维吉尼亚密码

    RSA算法 RSA算法描述 第1步:用两个很大的互异的质数p和q(p和q必须保密),计算它们的乘积n=pq:n是模数. 第2步:选择一个比n小的数e,它与(p-1)(q-1)互为质数,即除了1以外,e ...

  6. 密码学——维吉尼亚密码

    文章目录 前言 一.维吉尼亚密码简介 二.维吉尼亚算法 1.加密算法 2.解密算法 3.主函数 总结 前言 本内容为博主学习维吉尼亚密码的笔记,如有错误,烦请指正. 一.维吉尼亚密码简介 维吉尼亚密码 ...

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

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

  8. 维吉尼亚密码Java实现

    维吉尼亚密码是一种古典密码,属于代换密码,而且是多表代换密码. 密文对应的字母数字=明文对应的字母数字+密钥对应的字母数字 例如: 明文abcde,密钥abcd,对应的密文就是bdfhf,第五个明文e ...

  9. 密码学笔记——维吉尼亚密码

    维吉尼亚密码 一.简介 维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式. 二.加密算法 直接拿例子来说,比如我要加密一段明文        明文:THISISTO ...

最新文章

  1. C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解
  2. Fetch API HTTP请求实用指南
  3. Winform中自定义ZedGraph右键复制成功后的提示
  4. iOS之自定义封装tabBar
  5. CSS display属性的值及作用
  6. 我的工作网怎么样_分享一下我在珍爱网的相亲经历
  7. 亚马逊涨了 $4 千亿?!为什么它能成为疫情中获益最大的公司
  8. 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
  9. 百度大脑EasyMonitor升级2.0,全新发布软硬一体方案EM-BOX 边缘部署易集成
  10. 教您用事务一次处理多条SQL语句
  11. 阿里云nginx站点http升级https
  12. php jquery 实例教程,php jquery 多文件上传简单实例
  13. 分解例题_2020年中考数学考点之利用平方差公式进行因式分解习题练习
  14. 数学对数 log lg ln 简介
  15. 关于邮箱的POP协议、imap协议、imap协议简单讲解
  16. WGCLOUD部署对服务器硬件配置的一些建议
  17. [HEOI 2013 day2] 钙铁锌硒维生素 (线性代数,二分图匹配)
  18. python怎么实现模糊找色_Python下尝试实现图片的高斯模糊化
  19. doc转swf,主流文档在线查看解决方案--类似百度文档功能
  20. leetcode初级———旋转数组的多种算法总结

热门文章

  1. 高中数学必修一函数及其表示知识点
  2. MapReduce核心思想及其步骤原理
  3. 谷歌Android的关系,谷歌:Chrome OS和Android代表不同计算方向
  4. 关于CSS边框合并问题简述
  5. Netcat介绍及安装使用
  6. 越复习越害怕,考研路上这50种情境你可能遇到过
  7. Python中__slots__的使用
  8. laravel多条件查询方法(and,or嵌套查询)
  9. 【洛谷】P5707 【深基2.例12】上学迟到
  10. Qt浅谈之十七:飞舞的蝴蝶(GraphicsView框架)