黄毅然的JAVA学习之路

我一个编程lj,科技树点错的屑,在长期的头脑风暴中用JAVA写了写置换加密之一——矩阵加密方式。

为了让和我一样的辣鸡能够看懂,这里直接将加密方式char a[]在代码中直接列出。下面做一下矩阵加密的科普。
将我们需要加密的明文写在行为n,列为m的字符型矩阵中,用密钥对列进行加密。
下面解释下代码中的含义:
加密前:
3 1 2 4 6 5
a b c d e f
g h i j k l
m n o p q r
加密后:
1 2 3 4 5 6
b c a d f e
h i g j l k
n o m p r q

import java.util.Scanner;

public class mima {
     
	public static void main(String[] args)
	{
     
		int k=0,n=0;
		char[][] s=new char[3][6];
		Scanner scan = new Scanner(System.in);
		int a[]= {
     3,1,2,4,6,5};
		int b[]= {
     1,2,3,4,5,6};
		String w=scan.nextLine();
		char[] ss=w.toCharArray();
		scan.close();
		for(int i=0;i<3;i++)
		{
     
			for(int j=0;j<6;j++)
			{
     
				s[i][j]=ss[k];//Java中无法直接在二维数组中直接赋值,需要一个中间数组。
				k++;
			}
		}
		for(int i=0;i<6;i++)
		{
     
			for(int j=0;j<6;j++)
			{
     
				if(b[i]==a[j]) 
				{
     
					b[i]=j;//因为需要输出密文,所以用b[]记下密钥a[]的列地址
					break;
				}
			}
		}
		for(int i=0;i<3;i++)
		{
     
			for(int j=0;j<6;j++)
			{
     
				System.out.print(s[i][b[j]]);//改变列地址
				++n;
				if(n%6==0)
					System.out.print('\n');
			}
			
		}
	}

}

输入明文
abcdefghijklmnopqr
输出密文
bcadfe
higjlk
nomprq

此段代码用于演示加密原理,可以改编成一个自定义可调用的类,然后从其它类中传递参数(明文,密钥)
有错求指点QAQ

你可能感兴趣的:(java,矩阵)