「java凯撒加密代码」java凯撒密码代码

博主:adminadmin 2022-11-25 17:44:08 68

本篇文章给大家谈谈java凯撒加密代码,以及java凯撒密码代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java 编写一个凯撒加密和解密

ls 的代码有点问题,sorry。

想这个问题不需要什么思路,因为思路就是你的问题。既然说了往后移动三位,那么就 +3 呗,也说了 xyz 变成 abc 那么自然就取模。

public class Caesar {

public static char[] encode (char[] text) {

for (char ch : text) {

ch = (char) ((ch + 3 - 'a') % 26 + 'a'); //每个字符往后推3位,如果是 x y z 就回头开始

}

}

public static void main (String args[]) {

String text = "helloworld";

char[] cypher = encode(text.toCharArray());

System.out.println(new String(cypher));

}

}

各位大哥,在Java中用数组写的循环队列实现凯撒循环密码啊?

import java.*;

public class Practise {

public static void main(String[] args) {

String P = new String();// 明文

String K = new String();// 密钥

String C = new String();// 密文

short LR=-1;//间隔的方向,向左为-1,向右为1

P = "benrencainiaoyizhi";

K = "P";

C = "QTCGTCRPXCXPDNXOWX";

System.out.println("明文:"+P);

System.out.println("密钥:"+K);

System.out.println("密文:"+C+"\n");

CaesarCode caesar=new CaesarCode();

LR=1;

System.out.println("加密:"+caesar.encrypt(P, K, LR));

LR=-1;

System.out.println("解密:"+caesar.decrypt(K, C, LR).toLowerCase());

}

}

class CaesarCode {

private char alphabet[] = new char[26];//存储字母表

//加密

protected String encrypt(String P,String K,short LR)

{

int i=0,j=0,n=0;//n是间隔

String C=new String();//密文

P=P.toUpperCase();

P=getNewP(P);

K=K.toUpperCase();

n=getN(K);

//将明文转换成密文

for(i=0;iP.length();i++)

{

j=String.valueOf(alphabet).indexOf(P.charAt(i));//获取密文字母在字母表所在的下标

j=(j+n*LR+26)%26;//向左或向右移动n位

C+=(char)(j+65);

}

return C;

}

//解密

protected String decrypt(String K,String C,short LR)

{

int i=0,j=0,n=0;//n是间隔

String P=new String();//明文

K=K.toUpperCase();

C=C.replaceAll(" +"," ");

C=C.toUpperCase();

n=getN(K);

//将密文转换成明文

for(i=0;iC.length();i++)

{

j=String.valueOf(alphabet).indexOf(C.charAt(i));//获取密文字母在字母表所在的下标

j=(j+n*LR+26)%26;//向左或向右移动n位

P+=(char)(j+65);

}

return P;

}

//获取经过处理的明文

private String getNewP(String P)

{

int i=0;

char p[] = P.toCharArray();

for (i = 0; i P.length(); i++) {

if (p[i] 'A' || p[i] 'Z')// 将非字母换成空格

{

p[i] = ' ';

}

}

P = String.valueOf(p);

P = P.replaceAll(" +", "");// 将明文的所有空格去掉

return P;

}

//获取间隔

private int getN(String K)

{

int i=0,n=0;

//生成字母表

for(i=0;i26;i++)

{

alphabet[i]=(char)(i+65);//字母A在ASCII表中的值是065

}

if(isNum(K))

{

n=Integer.parseInt(K);

}

else

{

n=String.valueOf(alphabet).indexOf(K);//当K不是数字时适用

}

return n;

}

//判断密钥是否为数字

private boolean isNum(String K)

{

return K.matches("[0-9]+");//+表示1个或多个(如"3"或"225")

}

}

JAVA凯撒密码 选择问题

【看法】:

你的加密解密其实就是同一个方法,你是完全复制的,呵呵,连提示的话都没有改,那就给方法设置一个参数,根据参数判断是加密还是解密,其实就是提示不同罢了。

凯撒密码是最最原始的线性对称密码。

我给的选择菜单只有两个按钮,就是【加密】【解密】。显示都在控制台了,呵呵,你也可以自己在菜单上加一个JTextArea,把他们显示在菜单上面。

【代码】:

package Exam;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import javax.swing.*;

/**

*

* @author hujie0619jay@sina.com

* Mar 5, 20103:11:29 PM

*/

public class Exam_exam01 extends JFrame implements ActionListener{

/**

*

*/

private static final long serialVersionUID = 1L;

JFrame Jf;

JPanel Jp;

JButton but1,but2;

public void Menu(){//简单的选择页面

Jf=new JFrame("凯撒密码");

Jp=new JPanel();

but1=new JButton("加密");

but2=new JButton("解密");

Jp.add(but1);but1.addActionListener(this);

Jp.add(but2);but2.addActionListener(this);

Jf.add(Jp);

Jf.setSize(300,200);

Jf.setVisible(true);

}

public void actionPerformed(ActionEvent e){//事件处理

if(e.getSource()==but1) Cipher(0);

if(e.getSource()==but2) Cipher(1);

}

public void Cipher(int iNum){//凯撒密码 加密解密

try{

char b[];//存放密文

BufferedReader br2=new BufferedReader(new InputStreamReader(System.in));

if(iNum==0)System.out.println("请输入一段明文(只能输入小写字母):");

if(iNum==1)System.out.println("请输入一段密文(只能输入小写字母):");

String str2=br2.readLine();

b=str2.toCharArray();

if(iNum==0)System.out.println("密文为:");

if(iNum==1)System.out.println("明文为:");

for(int k=1;k=26 ;k++ ){

for(int i=0;istr2.length();i++){

char s=(char)((b[i]-'z'-k)%26+'z');//此处写“((b[i]-'a'-1)%26+'a')”也行

System.out.print(s);

}

System.out.println(" 密匙K="+k);

}

if(iNum==0)System.out.println("请在以上结果中查找可能的密文");

if(iNum==1)System.out.println("请在以上结果中查找可能的明文");

}catch(IOException e){

System.out.println(e.getMessage());

}

}

public static void main(String[] args){

Exam_exam01 ee=new Exam_exam01();

ee.Menu();

}

}

java编程,凯撒密码,不用数组

代码如下:

public class App {

public static void main(String[] args) {

String s = "Hello World!";

String result = "";

for (int i = 0; i  s.length(); i++) {

result += (char)(s.charAt(i) + 12);

}

System.out.println("加密结果:" + result);

}

}

关于java凯撒加密代码和java凯撒密码代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。