📄 playfair.java
字号:
/*
* Playfair.java
*
* Created on 2007年11月25日, 下午5:21
*/
import java.util.*;
import java.io.*;
import java.lang.Integer;
/**
*
* @author yy_yy
*/
public class Playfair extends javax.swing.JFrame {
/** Creates new form Playfair */
public Playfair() {
//getkey();
initComponents();
}
void getkey(){
String s =jTextField1.getText();
//System.out.println(s);
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if(ch<'a' || ch>'z' ){
javax.swing.JOptionPane.showMessageDialog(null,"请输入数据");
}
}
char c[] = s.toCharArray();
char c1[] = new char[25];
int n = 0;
for(int i = 0; i<c.length; i++){
boolean flg = true;
if(c[i]=='q'){c[i]='i';}
for(int j = 0; j < i; j++){
if( c[i] == c[j]){
flg = false;
continue;
}
}
if(flg){
c1[n] = c[i];
n++;
}
}
System.out.println(c1);
char c2[] = new char[25];
int t=0;
for(int m='a';m<='z';m++)
{
boolean flg1 = true;
if(m =='q'){
continue;//////////不要字符j//////////////////
}
char r = (char)m;
//c2[t] = r;
//t++;
//System.out.print(r);
for(int i = 0; i < c.length; i++){
if(c[i] == r){
flg1 = false;
//break;
}
}
if(flg1 == true){
c1[n] = r;
n++;
}
}
//System.out.println(c1);
//System.out.println(n);
// Iterator it = h.iterator();
int z =0;
for( int i = 0; i < 5; i++){
//System.out.println();
for(int j = 0; j < 5; j++){
key[i][j] = c1[z];
z++;
}
}
char l[] = new char[25];
int e = 0;
for( int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
l[e] = key[i][j];
e++;
System.out.print(key[i][j]);
//System.out.print(key[i][j]);
}
System.out.println();
}
jLabel1.setText(new String(l,0,1) );
jLabel2.setText(new String(l,1,1) );
jLabel3.setText(new String(l,2,1) );
jLabel4.setText(new String(l,3,1) );
jLabel5.setText(new String(l,4,1) );
jLabel6.setText(new String(l,5,1) );
jLabel7.setText(new String(l,6,1) );
jLabel8.setText(new String(l,7,1) );
jLabel9.setText(new String(l,8,1) );
jLabel10.setText(new String(l,9,1) );
jLabel11.setText(new String(l,10,1) );
jLabel12.setText(new String(l,11,1) );
jLabel13.setText(new String(l,12,1) );
jLabel14.setText(new String(l,13,1) );
jLabel15.setText(new String(l,14,1) );
jLabel16.setText(new String(l,15,1) );
jLabel17.setText(new String(l,16,1) );
jLabel18.setText(new String(l,17,1) );
jLabel19.setText(new String(l,18,1) );
jLabel20.setText(new String(l,19,1) );
jLabel21.setText(new String(l,20,1) );
jLabel22.setText(new String(l,21,1) );
jLabel23.setText(new String(l,22,1) );
jLabel24.setText(new String(l,23,1) );
jLabel25.setText(new String(l,24,1) );
}
void jiami(){
//getkey();
String s =jTextArea1.getText();
char c[] = new char[100];
char c1[]= new char[100];
char c2[]= new char[100];
int len = 0;
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if(ch>='a' && ch<='z' ){
c[len] = ch;
len++;
}
}
//c = s.toCharArray();
int flg = 0;
int nx = 0;
//int i = 0;
int size = len;
System.out.println(size);
for( int i = 0; i < size; i++){
c1[i] = c[i];
}
for( int i = 0; i < size/2; i++ ){ //判断明文中的重复元素
if(flg != 0){ //插过
i = 0;
flg = 0;
}
if(c1[i*2]==c1[i*2+1] ){ //判断明文中的重复元素
for(int j = size ;j>=i*2+1;j--){
System.out.println(j);
c1[j] = c1[j - 1];
}
c1[i*2+1] = 'x';
nx++;
flg=1;
++size;
}
}
if( (size%2)!= 0){ //判断明文总共是奇偶?
System.out.println(size);
c1[size] = 'x';
size=size + 1;
}
int r1 = 0, l1 = 0, r2 = 0, l2 = 0; //r 为行, l为列
for(int g = 0; g < size/2; g++){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
if(c1[2*g] == key[i][j]){
r1 = i;
l1 = j;
}
if(c1[2*g+1]== key[i][j]){
r2 = i;
l2 = j;
}
}
}
if(r2 == r1){ //同一行
c2[2*g] = key[r1][ (l1+1) % 5];
c2[2*g+1]=key[r2][ (l2+1) % 5];
}
else if(l1 == l2){ //同一列
c2[2*g] = key[(r1+1) % 5][l1];
c2[2*g+1]=key[(r2+1) % 5][l2];
}
else{
c2[2*g] = key[r1][l2];
c2[2*g+1]=key[r2][l1];
}
}
char jieguo[] = new char[size];
for(int i = 0; i < size; i++){
jieguo[i] = c2[i];
}
jTextArea2.setText(new String(jieguo));
}
void jiemi(){
String s =jTextArea2.getText();
char c[] = new char[100];
char c1[]= new char[100];
c = s.toCharArray();
System.out.println(c);
int size = s.length();
int r1 = 0, l1 = 0, r2 = 0, l2 = 0;
for(int n = 0; n < size/2; n++){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
if(c[2*n] == key[i][j]){
r1 = i;
l1 = j;
}
if(c[2*n + 1] == key[i][j]){
r2 = i;
l2 = j;
}
}
}
//System.out.println(1)%5);
if(r1 == r2){
if(l1 == 0 ){ l1 = 5;}
c1[2*n] = key[r1][(l1 - 1)%5];
if(l2 == 0 ){ l2 = 5;}
c1[2*n + 1] = key[r2][(l2 - 1)%5];
}
else if(l1 == l2){
if(r1 == 0){ r1 = 5;}
c1[2*n] = key[(r1 - 1)%5][l1];
if(r2 == 0){ r2 = 5;}
c1[2*n + 1] = key[(r2 - 1)%5][l2];
}
else{
c1[2*n] = key[r1][l2];
c1[2*n + 1] = key[r2][l1];
}
}
char c2[]= new char[size];
for(int j = 0; j < size; j++ ){
c2[j] = c1[j];
}
jTextArea1.setText(new String(c2));
}
/** This method is called from within the constructor to fgdebcanolmkhiwvutsrqpzyx
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
jLabel20 = new javax.swing.JLabel();
jLabel21 = new javax.swing.JLabel();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -