加密解密小程序
米事写的小程序 - -
操作是写入密匙(限定是长度最多为10的数字串)/字符 实时转换
加密方法是对每个字符*(除了字母之外所有字符也都可行 - -)进行向后移位的操作。
【源码】
Decode.java
-
/**
-
* 解密算法
-
*/
-
public class Decode {
-
-
/**
-
* 解密算法
-
* @param keyStr 密匙
-
* @param ostr 密文
-
* @return 明文
-
*/
-
-
char[] str = ostr.toCharArray();
-
int[] key = new int[20];
-
-
for(int i=0;i<keyStr.length();i++){
-
key[i]=((int)keyStr.charAt(i))-48;
-
}
-
-
for(int i=0;i<ostr.length();i++){
-
str[i] = (char)((int)str[i]-key[i%keyStr.length()]);
-
}
-
-
}
-
-
}
Encode.java
-
/**
-
* 加密算法
-
*/
-
public class Encode {
-
-
/**
-
* 加密算法
-
* @param keyStr 密匙
-
* @param str 明文
-
* @return 密文
-
*/
-
char[] ostr = str.toCharArray();
-
int[] key = new int[20];
-
-
for(int i=0;i<keyStr.length();i++){
-
key[i]=((int)keyStr.charAt(i))-48;
-
}
-
-
for(int i =0;i<str.length();i++){
-
ostr[i] = (char)((int)ostr[i]+key[i%keyStr.length()]);
-
}
-
-
}
-
-
}
GUIFrame.java
-
import java.awt.*;
-
import java.awt.event.ActionEvent;
-
import java.awt.event.ActionListener;
-
-
import javax.swing.*;
-
import javax.swing.border.Border;
-
import javax.swing.event.DocumentEvent;
-
import javax.swing.event.DocumentListener;
-
-
/**
-
* GUI界面
-
*/
-
-
-
/** 加密选项 */
-
/** 解密选项 */
-
-
/** 容器 */
-
/** 边框 */
-
-
/** 加密提示 */
-
/** 解密提示 */
-
/** 密匙提示 */
-
-
/** 明文框 */
-
/** 密文框 */
-
/** 密匙框 */
-
-
/** 处理行为 */
-
EncodeStrAction strEncodeAction = new EncodeStrAction();
-
DecodeStrAction strDecodeAction = new DecodeStrAction();
-
KeyEncodeAction keyEncodeAction = new KeyEncodeAction();
-
KeyDecodeAction keyDecodeAction = new KeyDecodeAction();
-
-
/**
-
* 构造方法
-
*/
-
public GUIFrame(){
-
this.setSize(300,200);
-
this.setTitle("加密解密小程序 - -");
-
-
-
-
encodeBtn.addActionListener(new EncodeAction());
-
decodeBtn.addActionListener(new DecodeAction());
-
-
chooseBtn.add(encodeBtn);
-
chooseBtn.add(decodeBtn);
-
-
this.add(chooseBtn,"North");
-
-
panel.setSize(300,300);
-
panel.setBorder(border);
-
-
this.add(panel,"Center");
-
-
-
showEncodeFrame();
-
-
this.setVisible(true);
-
}
-
-
/** 加密选项 */
-
-
encodeBtn.setSelected(true);
-
decodeBtn.setSelected(false);
-
setBorderTitle("加密");
-
showEncodeFrame();
-
}
-
-
}
-
-
/** 解密选项 */
-
-
encodeBtn.setSelected(false);
-
decodeBtn.setSelected(true);
-
setBorderTitle("解密");
-
showDecodeFrame();
-
}
-
-
}
-
-
/** 清理容器 */
-
private void clear(){
-
panel.remove(encodeLabel);
-
panel.remove(decodeLabel);
-
panel.remove(keyLabel);
-
panel.remove(encodeStr);
-
panel.remove(decodeStr);
-
panel.remove(keyStr);
-
}
-
-
/** 设置标题 */
-
panel.setBorder(null);
-
panel.setBorder(border);
-
}
-
-
/** 加密操作 */
-
private void showEncodeFrame(){
-
-
clear();
-
-
encodeStr.setEditable(true);
-
panel.add(encodeLabel);panel.add(encodeStr);
-
panel.add(keyLabel);panel.add(keyStr);
-
-
decodeStr.setEditable(false);
-
panel.add(decodeLabel);panel.add(decodeStr);
-
-
encodeStr.getDocument().addDocumentListener(strEncodeAction);
-
decodeStr.getDocument().removeDocumentListener(strDecodeAction);
-
-
keyStr.getDocument().removeDocumentListener(keyDecodeAction);
-
keyStr.getDocument().addDocumentListener(keyEncodeAction);
-
-
}
-
-
/** 解密操作 */
-
private void showDecodeFrame(){
-
clear();
-
-
decodeStr.setEditable(true);
-
panel.add(decodeLabel);panel.add(decodeStr);
-
panel.add(keyLabel);panel.add(keyStr);
-
-
encodeStr.setEditable(false);
-
panel.add(encodeLabel);panel.add(encodeStr);
-
-
encodeStr.getDocument().removeDocumentListener(strEncodeAction);
-
decodeStr.getDocument().addDocumentListener(strDecodeAction);
-
-
keyStr.getDocument().removeDocumentListener(keyEncodeAction);
-
keyStr.getDocument().addDocumentListener(keyDecodeAction);
-
-
}
-
-
/** 加密处理 */
-
-
updateDecodeStr();
-
}
-
-
updateDecodeStr();
-
}
-
-
updateDecodeStr();
-
}
-
-
}
-
-
/** 解密处理 */
-
-
updateEncodeStr();
-
}
-
-
updateEncodeStr();
-
}
-
-
updateEncodeStr();
-
}
-
-
}
-
-
/** 加密更新 */
-
private void updateDecodeStr(){
-
// 判定密匙是否合法
-
if(chk(keyStr.getText())){
-
decodeStr.setText(new Encode().encodeStr(keyStr.getText(), encodeStr.getText()));
-
}else{
-
decodeStr.setText("密匙必须是最多十位的数字!");
-
}
-
}
-
-
/** 解密更新 */
-
private void updateEncodeStr(){
-
// 判定密匙是否合法
-
if(chk(keyStr.getText())){
-
encodeStr.setText(new Decode().decodeStr(keyStr.getText(), decodeStr.getText()));
-
}else{
-
encodeStr.setText("密匙必须是最多十位的数字!");
-
}
-
}
-
-
if(key.length()>10){
-
return false;
-
}
-
try {
-
return true;
-
return false;
-
}
-
}
-
-
/** 加密时改变密匙 */
-
updateDecodeStr();
-
}
-
-
updateDecodeStr();
-
}
-
-
updateDecodeStr();
-
}
-
-
}
-
-
/** 解密时改变密匙 */
-
-
updateEncodeStr();
-
}
-
-
updateEncodeStr();
-
}
-
-
updateEncodeStr();
-
}
-
}
-
-
}
Main.java