java维吉尼亚密码_java实现维吉尼亚加密/解密算法

这篇博客介绍了如何使用Java实现维吉尼亚加密和解密算法,包括加密算法程序和解密算法程序的详细代码,以及MyInput.java类用于键盘输入的支持。
摘要由CSDN通过智能技术生成

加密算法程序:

public class mtoc

{

//输入明文和密钥,用输入的密钥对明文进行加密

public static void main(String[] args)

{int i;

char[] c=new char[100];

char[] k1=new char[100];

//输入

System.out.print("enter a mingwen string:");

String m=MyInput.readString();

System.out.print("enter a key string:");

String k=MyInput.readString();

//构造密钥对照表

for(i=0;i

{

if(k.charAt(i)>='a'&&k.charAt(i)<='z')

k1[i]=(char)(k.charAt(i)-97);

if(k.charAt(i)>='A'&&k.charAt(i)<='Z')

k1[i]=(char)(k.charAt(i)-65);

}

//加密

for(i=0;i

{

if(m.charAt(i)>='a'&&m.charAt(i)<='z')

c[i]=(char)((m.charAt(i)-97+k1[i%k.length()])%26+97);

if(m.charAt(i)>='A'&&m.charAt(i)<='Z')

c[i]=(char)((m.charAt(i)-65+k1[i%k.length()])%26+65);

}

//输出密文

for(i=0;i

System.out.print(c[i]);}

}

解密算法程序:

public class ctom

{

//输入密文和密钥,用密钥对密文解密

public static void main(String[] args)

{int i;

char[] m=new char[100];

char[] k1=new char[100];

//输入

System.out.print("enter the miwen string:");

String c=MyInput.readString();

System.out.print("enter the key string:");

String k=MyInput.readString();

//构造密钥对照表

for(i=0;i

{

if(k.charAt(i)>='a'&&k.charAt(i)<='z')

k1[i]=(char)(k.charAt(i)-97);

if(k.charAt(i)>='A'&&k.charAt(i)<='Z')

k1[i]=(char)(k.charAt(i)-65);

}

//解密

for(i=0;i

{

if(c.charAt(i)>='a'&&c.charAt(i)<='z')

m[i]=(char)((c.charAt(i)-97-k1[i%k.length()]+26)%26+97);

if(c.charAt(i)>='A'&&c.charAt(i)<='Z')

m[i]=(char)((c.charAt(i)-65-k1[i%k.length()]+26)%26+65);

}

//输出明文

for(i=0;i

System.out.print(m[i]);}

}

需要用到的MyInput.java类:

// MyInput.java: Contain the methods for reading int, double, and

// string values from the keyboard

import java.io.*;

public class MyInput

{

// Read a string from the keyboard

public static String readString()

{

BufferedReader br

= new BufferedReader(new InputStreamReader(System.in), 1);

// Declare and initialize the string

String string = "";

// Get the string from the keyboard

try

{

string = br.readLine();

}

catch (IOException ex)

{

System.out.println(ex);

}

// Return the string obtained from the keyboard

return string;

}

// Read an int value from the keyboard

public static int readInt()

{

return Integer.parseInt(readString());

}

// Read a double value from the keyboard

public static double readDouble()

{

return Double.parseDouble(readString());

}

// Read a byte value from the keyboard

public static byte readByte()

{

return Byte.parseByte(readString());

}

// Read a short value from the keyboard

public static short readShort()

{

return Short.parseShort(readString());

}

// Read a long value from the keyboard

public static long readLong()

{

return Long.parseLong(readString());

}

// Read a float value from the keyboard

public static float readFloat()

{

return Float.parseFloat(readString());

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值