`

java实现维吉尼亚算法

阅读更多
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实现

    运行环境:Windows + eclipse + JAVA 维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

    python实现维吉尼亚算法

    本文实例为大家分享了python实现维吉尼亚算法的具体代码,供大家参考,具体内容如下 1 Virginia加密算法、解密算法 Vigenenre密码是最著名的多表代换密码,是法国著名密码学家Vigenenre发明的。Vigenenre密码使用一...

    维吉尼亚算法

    这是用java语言编写的维吉尼亚算法,包括加密和解密。相信是一份不错的参考资料。下载看看吧。

    JS维吉尼亚密码算法实现代码

    我想用JS实现对文本的加密和解密,想用维吉尼亚密码算法,谁有现成代码啊

    aaa.rar_java 加解密_return_维吉尼亚 密码 算法_维吉尼亚解密

    用维吉尼亚算法加密 /** * 维吉尼亚密码算法(BigDecimal),加/解密处理后仍为BigDecimal类型,正负号和小数点不进行处理 * * @param str * 源BigDecimal * @param key * 密钥,应为数字字符组成的字符串 * @...

    Vigenère密码加解密及破解的java代码

    本人由于作业缘故,编写了一份java版的Vigenère密码加解密及破解的代码,密文密钥需要从控制台输入,可以更改代码,改为对文件的读写操作更为方便。 Vigenère密码的破解,一定要建立在大量的密文基础上(密文一定...

    维吉尼亚密码c#编写

    运用Java、C#等语言编写一个图形化桌面窗口,完成维吉尼亚密码的加密解密过程

    编写古典加解密算法

    使用凯撒和维吉尼亚加密算法编程实现将明文转换成密文。 使用凯撒和维吉尼亚解密算法编程实现将密文转换成明文。

    维吉尼亚密码加密--解密程序

    维吉尼亚密码加密--解密程序,可以帮您验证你写的算法是否正确

    JAVA实现的VIgenere密码加密解密系统及唯密文破译

    JAVA编程实现的Vigenere加密/解密系统,唯密文破译系统源代码

    加解密实验 java环境

    凯撒密码;维吉尼亚密码;RSA算法;SHA算法;DSA算法;LZW算法;数字水印等算法在java环境下的加解密算法的实现

    古典密码的移位算法及置换算法

    维吉尼亚密码 首先确定密钥长度(本例中密钥只采取个位数字,所以取决于输入密钥的长度),然后输入满足这个长度的向量;加密:取明文第一个字母并将之移k1位,这里k1=1,第二个字母移k2位,k2=2,一旦到了密钥末尾,...

    一种基于Java Applet的Vigenere密文破译方法

    Vigenere的加密解密原理,有详细的算法分析和代码,Vigenere的破译原理和代码。给出了具体的算法和代码分析。

    基于Weka的数据分类分析实验报告.docx

    图2 AREF格式数据集(iris.arff) 鸢尾花的数据集包括三个类别:Iris Setosa(山鸢尾)、Iris Versicolour(变色鸢尾)和Iris Virginica(维吉尼亚鸢尾),每个类别各有50个实例。数据集定义了5个属性:sepal ...

    基于Weka的数据分类分析实验报告范文.docx

    图2AREF格式数据集(iri.arff) 鸢尾花的数据集包括三个类别:IriSetoa(山鸢尾)、IriVericolour(变色鸢尾)和IriVirginica(维吉尼亚鸢尾),每个类别各有50个实例。数据集定义了5个属性:epallength(花萼长)...

Global site tag (gtag.js) - Google Analytics