Vigenere密码算法-维吉尼亚-java程序--eclipse-编译

更新时间:2023-11-24 06:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Vigenere密码算法java程序实现

程序分为四个类

Vigenere ....................... 主运行类 Menu ....................... 菜单类

Regex ....................... 输入格式检验类 Operate ....................... 执行操作算法类

一.Vigenere ....................... 主运行类:

public class Vigenere {

public static void main(String [] args){ new Vigenere().start(); }

private void start() { Menu menu = new Menu(); menu.menu(); } }

二.Menu ....................... 菜单类:

import java.util.Scanner; public class Menu { public void menu(){

System.out.println(\);

System.out.println(\。加 密 操 作 ********\); System.out.println(\);

System.out.println(\。解 密 操 作 ********\); System.out.println(\);

System.out.println(\。退 出 程 序 ********\); System.out.println(\); while(true){

Operate o = new Operate();

System.out.println(\请输入需要执行的操作代码,1,2或3\);

Scanner sc = new Scanner(System.in); String str = sc.nextLine();

int key = Integer.parseInt(str); switch(key){

case 1:o.jiaMi();break; case 2:o.jieMi();break; case 3:System.exit(0);

default:System.out.println(\请正确输入操作代码1,2或3:\);break;}}}}

三.Regex ....................... 输入格式检验类:

import java.util.Scanner; public class Regex {

public static String expresslyRegex ( ) { Scanner sc = new Scanner(System.in); String regex = \; String inputStr; while(true){

//对输入明文进行检验

System.out.println(\请输入需要加密的明文,1-500位小写字母\); inputStr = sc.nextLine(); if(inputStr.matches(regex)){ return inputStr; }

System.out.println(\输入内容有误,请从新输入需要加密的明文,1-500位小写字母!\); } }

public static String keyRegex ( ) { Scanner sc = new Scanner(System.in); String regex = \; String inputStr; while(true){

//对输入密钥进行检验

System.out.println(\请输入密钥,1-500位小写字母\); inputStr = sc.nextLine(); if(inputStr.matches(regex)){ return inputStr; }

System.out.println(\输入内容有误,请从新输入密钥,1-500位小写}}

//对输入明文进行检验

字母!\);

public static String ciphertextRegex ( ) { Scanner sc = new Scanner(System.in); String regex = \; String inputStr;

while(true){

System.out.println(\请输入需要解密的密文,1-500位小写字母\); inputStr = sc.nextLine(); if(inputStr.matches(regex)){ return inputStr; }

System.out.println(\输入内容有误,请从新输入需要解密的密文,1-500位小写字母!\);}}}

四.Operate ....................... 执行操作算法类:

import java.util.Vector; public class Operate {

public void jiaMi(){ //加密方法 String v = \;

Vector vexpressly = new Vector();

//定义明文数组

vexpressly.add(Regex.expresslyRegex());

//检验格式后加入明文数组

Vector vkey = new Vector(); //定义密钥数组

vkey.add(Regex.keyRegex());

//检验格式后加入密钥数组

System.out.println(\明文为 \+vexpressly); System.out.println(\密钥为 \+vkey); for(String a:vexpressly){

//将输入的明文与密文从数组类型转换成String类型 for(String b:vkey){

for(int i=0;i

int j = i%(b.length());

char s = (char) (((int) a.charAt(i) + b.charAt(j)-194)&+97);//对应的密文 v = v+s;

//把生成的密文字符逐个加到v上

} } }

System.out.println (\生成的密文为:\+v); } public void jieMi(){

//解密方法

String v = \;

Vector ciphertext = new Vector();

//定义密文数组

ciphertext.add(Regex.ciphertextRegex()); Vector vkey = new Vector();

//定义密钥数组

vkey.add(Regex.keyRegex());

System.out.println(\密文为 \+ciphertext); System.out.println(\密钥为 \+vkey);

for(String a:ciphertext){ for(String b:vkey){

for(int i=0;i

char s = (char) ((((int) a.charAt(i)+26) - b.charAt(j))&+97);

//解密的过程 v = v+s; }}}

System.out.println (\对应的明文为:\+v);}}

程序结果截图:

本文来源:https://www.bwwdw.com/article/yg9t.html

Top