import sun.net.www.content.text.plain;
public class Vigenere
{
//维吉尼亚加密算法的实现,主要问题是如何构建一个2唯的矩阵表
int num = 26*26;
public static int data[][]= new int[26][26];
public static String key = "BEST";
public static String plainText = "HELLO WORLD";
public static String cipherText = "";
public static void init(){
int temp=0;
for(int i =0;i<26;i++){
for(int j=0;j<26;j++){
data[i][j]=(i+j)%26;
System.out.print(data[i][j]);
}
System.out.println();
}
//System.out.println("-------"+data[13][12]);
}
public static String vigenere(String str){
//str为输入的明文
if(str!=null){
plainText = str.trim().toLowerCase();
}
System.out.println("plain length:"+plainText.length());
for(int i=0;i<plainText.length();i++){
char []temp = new char[plainText.length()];
if(key.length()>=temp.length){
key = temp.toString().toLowerCase();
}
else{
// System.out.println("i="+i);
for(int j=0,t=0;t<temp.length;j++,t++){
// System.out.println("j="+j);
if(j==key.length())
{
j=0;
}
temp[t]=key.charAt(j);
}
char []t = temp;
System.out.println();
for(i=0;i<t.length;i++)
key = new String(t).toLowerCase();
}
System.out.println(key);
}
char[]k = key.toLowerCase().toCharArray();
char[]p = plainText.trim().toLowerCase().toCharArray();
char[]c = new char[p.length];
int p1=0;
int p2=0;
for(int i=0;i<plainText.length();i++){
p1=k[i]-97;
p2=p[i]-97;
System.out.println("p1="+p1+",p2="+p2);
//查表,找出对应的p1,p2位置元素的值
c[i]=(char) (data[p1][p2]+97);
System.out.println(c[i]+"---");
}
cipherText=new String(c).toLowerCase();
System.out.println("明文为:"+plainText);
System.out.println("密钥为:"+key);
System.out.println("密文为:"+cipherText);
return cipherText;
}
public static void main(String args[]){
init();
vigenere("HELLOWORLD");
}
}
分享到:
相关推荐
在Java中实现维吉尼亚加密算法,我们需要理解以下几个核心概念: 1. **密钥**:维吉尼亚密码的关键在于其密钥,这是一个由字母组成的字符串,决定了加密和解密过程中使用的偏移量。密钥的长度决定了密码表的循环...
密码学实验一 编程实现维吉尼亚算法 熟悉维吉尼亚算法的加解密过程
`Vigenere.java`文件很可能是实现维吉尼亚算法的Java代码。在Java中,可以使用ASCII码或者Unicode编码来表示字符,然后根据维吉尼亚算法的规则进行加密和解密操作。通常,此类程序会包含两个主要方法:`encrypt()`...
本文实例为大家分享了python实现维吉尼亚算法的具体代码,供大家参考,具体内容如下 1 Virginia加密算法、解密算法 Vigenenre密码是最著名的多表代换密码,是法国著名密码学家Vigenenre发明的。Vigenenre密码使用一...
该项目是一个基于Java语言的维吉尼亚加密算法实现,包含20个文件,包括6个XML配置文件、2个Git忽略文件、2个Markdown文件、2个Java源文件、2个class文件、1个LICENSE文件、1个PNG图片文件、1个属性文件和1个JAR包...
在给定的代码片段中,我们可以看到作者实现了维吉尼亚加密算法的两个主要功能:加密和解密。代码中使用了三个字符数组arra、arrb和arrc分别存储密钥、明文(或密文)以及最终的加密结果或解密结果。其中,arra用于...
根据提供的文件信息,我们可以归纳出以下关于“维吉尼亚算法”的相关知识点: ...综上所述,通过Java语言实现的维吉尼亚算法可以有效地完成文本的加密和解密工作,但其安全性取决于密钥的选择和使用方式。
通过这个实验,你不仅可以掌握Java编程语言中的加密算法实现,还能深入理解加密与解密的基本原理,同时培养了分析和破解密码的能力。这将对你的信息安全知识体系构建起到重要的作用,使你能够应对更高级的密码学挑战...
我想用JS实现对文本的加密和解密,想用维吉尼亚密码算法,谁有现成代码啊
用维吉尼亚算法加密 /** * 维吉尼亚密码算法(BigDecimal),加/解密处理后仍为BigDecimal类型,正负号和小数点不进行处理 * * @param str * 源BigDecimal * @param key * 密钥,应为数字字符组成的字符串 * @...
在信息安全领域,实习项目往往是为了让学生深入理解和应用理论知识,本次实习的主题是“古典加密算法的实现”,并结合了Java的Swing库来构建图形用户界面(GUI)。实习旨在通过实际操作,帮助实习生掌握密码学的基本...
本人由于作业缘故,编写了一份java版的Vigenère密码加解密及破解的代码,密文密钥需要从控制台输入,可以更改代码,改为对文件的读写操作更为方便。 Vigenère密码的破解,一定要建立在大量的密文基础上(密文一定...
在本项目中,我们使用Java编程语言实现了Vigenere加密和解密系统,以及一个唯密文破译的工具。 1. **Vigenere加密算法**: Vigenere加密基于凯撒密码的原理,但增加了复用的密钥。对于每个明文字母,我们将其与...
运用Java、C#等语言编写一个图形化桌面窗口,完成维吉尼亚密码的加密解密过程
使用这样的程序可以帮助开发者或者密码学爱好者验证他们的维吉尼亚密码算法实现是否正确,因为你可以对比程序的结果和自己的计算结果,确保一致性。 在实际应用中,尽管维吉尼亚密码在当时被认为相当安全,但在现代...
使用凯撒和维吉尼亚加密算法编程实现将明文转换成密文。 使用凯撒和维吉尼亚解密算法编程实现将密文转换成明文。
根据给定的文件信息,本篇文章将深入探讨维吉尼亚算法和凯撒算法在Java中的实现,以及这两种古典密码算法的原理与应用。 ### 维吉尼亚算法 维吉尼亚算法(Vigenère cipher),是一种多字母表替换密码,由法国密码...
"Mapabc解密Java实现"是一个使用Java编程语言编写的程序,主要目的是对特定的Mapabc数据进行解密处理。Mapabc可能是一个地理信息系统或地图服务的数据格式,需要通过特定算法进行解码以便于分析或使用。这个程序的...
在Java环境中,这些算法的实现通常需要借助Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE)。JCA提供了加密、解密、哈希和签名的基本框架,而JCE则提供了更高级的加密算法支持,如RSA和...
维吉尼亚密码 首先确定密钥长度(本例中密钥只采取个位数字,所以取决于输入密钥的长度),然后输入满足这个长度的向量;加密:取明文第一个字母并将之移k1位,这里k1=1,第二个字母移k2位,k2=2,一旦到了密钥末尾,...