十万火急!!!java高手情进!!!

4、编程实现“凯撒密码”;(要求:明文的长度可以是字符串或一段信息,加密密钥由用户输入;公式:ch=(char)((ch-'a'+key)%26+'a');)
必须要有加密和解密两个功能
一定要有类似这种窗口。自己排版,

(我真的不会,我做了。不是没想过而拿上来的,所以希望会的前辈说叫我自己想,麻烦您们帮我写一个好看的代码吧,记得写上备注哦,因为我想看看你们是怎么写的。)

我写了一点代码.我java学的不深的,不过超过我的学习范围,不然我不懂 老师也不信。谢谢
public class Jiami extends JFrame implements ActionListener{
JPanel p_north,p_center,p_south,panel1,panel2,panel3;
JTextField jtf_north,jtf_center,jtf_south;
JButton b1,b2;
public Jiami(){
p_north = new JPanel();
p_center = new JPanel();
p_south = new JPanel();
jtf_north = new JTextField(10);
jtf_center = new JTextField(10);
jtf_south = new JTextField(10);
b1 = new JButton("加密");
b1.addActionListener(this);
b2 = new JButton("退出");
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(1);

}

});
p_north.add(new JLabel("明文:"));
p_north.add(jtf_north);
p_center.add(new JLabel("密钥:"));
p_center.add(jtf_center);
p_center.add(b1);
p_center.add(b2);
p_south.add(new JLabel("密文:"));
p_south.add(jtf_south);
this.add(p_north,BorderLayout.NORTH);
this.add(p_center,BorderLayout.CENTER);
this.add(p_south,BorderLayout.SOUTH);
this.setSize(200,170);
this.setResizable(false);
this.setLocation(200, 200);
this.setVisible(true);

}

。。。。

其实公式已经有了,真的很简单的,我帮你实现一下吧

package cn.denghui.encrypt;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Jiami extends JFrame implements ActionListener
{
JPanel p_north, p_center, p_south, panel1, panel2, panel3;
JTextField jtf_north, jtf_center, jtf_south;
JButton b1, b2;

public Jiami()
{
p_north = new JPanel();
p_center = new JPanel();
p_south = new JPanel();
jtf_north = new JTextField(10);
jtf_center = new JTextField(10);
jtf_south = new JTextField(10);
b1 = new JButton("加密");
b1.addActionListener(this);
b2 = new JButton("退出");
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}

});
p_north.add(new JLabel("明文:"));
p_north.add(jtf_north);
p_center.add(new JLabel("密钥:"));
p_center.add(jtf_center);
p_center.add(b1);
p_center.add(b2);
p_south.add(new JLabel("密文:"));
p_south.add(jtf_south);
this.add(p_north, BorderLayout.NORTH);
this.add(p_center, BorderLayout.CENTER);
this.add(p_south, BorderLayout.SOUTH);
this.setSize(200, 170);
this.setResizable(false);
this.setLocation(200, 200);
this.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(b1))
{
encrypt(); //点击加密按扭进行加密
}
}

//---------------------------------------以下-------------
public void encrypt()
{
//获取字段中的字据
String str = jtf_north.getText();
int key =0;
try
{
key = Integer.parseInt(jtf_center.getText()); //由于这句可能转换异常
}catch(NumberFormatException e){
System.out.println("类型转换异常");
}
StringBuffer buf = new StringBuffer();
//依次将字符串的字符依据key转成密文
for(char ch:str.toCharArray()){
ch=(char)((ch-'a'+key)%26+'a');
buf.append(ch);
}
jtf_south.setText(buf.toString());
}
//---------------------------------------以上-------------

public static void main(String[] args)
{
new Jiami();
}
}

/*
至于解密,因为你这公式密文与明文不是一对一的关系(比如明文1和K 密钥1 都是对应L这个密文),所以一个密文可能对应多个明文,具体的公式----->ch = (char)((ch-'a')+26*n -1+'a');  或 ch = (char)((ch-'a')-26*n -1+'a'); 其中n未知(1,2,3..),所以我猜你们老师没叫你们写解密的吧
恺撒密码的加密与解密的一种简易模式 加密ch=ch+key 解密:ch=ch-key

*/

 =========================异或实现对称加解密===============================

 package cn.denghui.encrypt;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Jiami extends JFrame implements ActionListener
{
 JPanel p_north, p_center, p_south, panel1, panel2, panel3;
 JTextField jtf_north, jtf_center, jtf_south;
 JButton b1, b2;
 public Jiami()
 {
  p_north = new JPanel();
  p_center = new JPanel();
  p_south = new JPanel();
  jtf_north = new JTextField(10);
  jtf_center = new JTextField(10);
  jtf_south = new JTextField(10);
  b1 = new JButton("加密解密");
  b1.addActionListener(this);
  b2 = new JButton("退出");
  b2.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(1);
   }
  });
  p_north.add(new JLabel("明文:"));
  p_north.add(jtf_north);
  p_center.add(new JLabel("密钥:"));
  p_center.add(jtf_center);
  p_center.add(b1);
  p_center.add(b2);
  p_south.add(new JLabel("密文:"));
  p_south.add(jtf_south);
  this.add(p_north, BorderLayout.NORTH);
  this.add(p_center, BorderLayout.CENTER);
  this.add(p_south, BorderLayout.SOUTH);
  this.setSize(200, 170);
  this.setResizable(false);
  this.setLocation(200, 200);
  this.setVisible(true);
 }
 @Override
 public void actionPerformed(ActionEvent e)
 {
  if(e.getSource().equals(b1))
  {
   String str = encrypt(jtf_north.getText(),jtf_center.getText()); //点击加密按扭进行加密
   jtf_south.setText(str);
  }
 }
 
 //---------------------------------------以下-------------
 //简单字符串对称加密解密
 public static String encrypt(String data,String key)
 {
  byte[] bs = data.getBytes(); //将字符串按系统默认编码GBK编码成字节码
  int b = Integer.parseInt(key); //将字符串转换成数字
  b = b%127;  //过滤超过ASCII表范围的字符
  for (int i = 0; i < bs.length; i++)
  {
   bs[i]=(byte) (bs[i]^b);  //关键地方:将每个字节与密钥异或,生成对应的密文字节
   //比如     4^16^16 = 4;
  }
  return new String(bs);
 }
 
 //---------------------------------------以上-------------
 
 public static void main(String[] args)
 {
  new Jiami();
 }
}

温馨提示:内容为网友见解,仅供参考
无其他回答

高手请进来指导下,十万火急!
1.把路由器和网线分别连接到其他正常的电脑上,看是否有类似情况出现。如果有,就是路由器或网线坏了。2.也可能是系统的毛病,把系统备份之后,重新做下系统,如果还是有同类现象出现可以恢复系统备份,不会太麻烦的。

十万火急!!请电脑高手指教!!在线等
1.“同学录.vbe”是不是木马。 显然是木马!而且估计很危险 2.如果是木马怎么办? 下载杀毒软件查杀,推荐卡巴斯基 进http:\/\/www.kaspersky.com.cn\/KL-Downloads.htm 然后选择使用下载 3.如果不是木马那它是什么? 是一个脚本,运行的就是木马 4.如果不是木马人家为什么要想办法让我接? 让...

防黑高手请进!!十万火急!!!
建议你先重新安装系统`你肯定是中木马了`重装后再安装防火墙`建议用卡巴司基`把无用的端口都关掉`把远程关掉`再弄个木马杀客`平时注意你的计算机用户`把操作系统的补丁更新更新好`应该会有用

十万火急!!!
十万火急指的是公众号的点击量,当公众号最近的点击量好久都没有突破十万的时候,老板就很容易发火了,小编们会特别着急上火,所以就用十万火急来表示小编们的心情!

十万火急!vb高手请进
Dim workarea(250) As String 这句话定义了一个叫workarea,大小是250的字符串数组。知道了上面一句话的意思,下面这个应该不难理解:workarea(counter) = "initial value" & counter 这一句的意思是workarea的第counter个元素的值是initial value加上counter的值(其实这一句没有什么用)要减慢它,可以...

文言文翻译```请高手帮忙 ```十万火急
无道则隐。邦有道,贫且贱焉,耻也。邦无道,富且贵焉,耻也。(《论语·泰伯》)【译文】孔子说:"坚定地相信我们的道,努力学习,誓死保全它;不进入危险的国家,不住在动乱的国家;国家太平就出来施展才华,国家黑暗就隐姓埋名。国家安定,贫穷低贱就是耻辱;国家动乱,富贵也是耻辱。"...

十万火急,电脑高手请进!!!
按住shift,点右键,选择打开方式,然后选择始终使用该程序打开。

十万火急``字谜高手请速进 鸡毛鸡毛鸡毛
情投意合、地久天长。理由是:鸳鸯双双戏水中;情:鸳鸯是情鸟,鸳鸯双双戏水情意绵绵;蝶儿对对恋花丛:投:恋花丛即投入花丛中;我有柔情千万种;意;柔情:为意,柔情密意;今生能与谁共融;合;融:合,融合;红豆本是相思种;地;(这句比较牵强)前世种在我心中;久;前世种:由来已久;等...

日语高手进~~~十万火急~!
看来真是十万火急啊 急的忘了

电脑高手请进 !!十万火急!
右击网上邻居属性看下里面有没有本地连接。如果没有建议把主板放电看下是否找到网卡。再找不到就是集成网卡坏了。

相似回答
大家正在搜