在java聊天中添加caesar密码

在java聊天中添加caesar密码,java,encryption,chat,Java,Encryption,Chat,所以,我只想在我的java聊天应用程序中添加caesar密码,如何添加它们?我要加密客户端服务器,然后解密服务器上的服务器 顺便说一下,下面是我的java聊天代码: import java.io.*; import java.net.*; import java.util.Scanner; public class chat { static void Client() throws IOException { String ip; Buffe

所以,我只想在我的java聊天应用程序中添加caesar密码,如何添加它们?我要加密客户端服务器,然后解密服务器上的服务器

顺便说一下,下面是我的java聊天代码:

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class chat
{
    static void Client() throws IOException 
    {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Server : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;

        while (true)
        {
            System.out.print("Client : ");
            s=stdin.readLine();
            sout.println(s);
            s=sin.readLine();
            System.out.print("Server : "+s+"\n");
            if(s.equalsIgnoreCase("Bye"))
            break;
        }
        stdin.close();
        sout.close();
        sin.close();
        client.close();
    }
    static void Server() throws IOException {
    ServerSocket server=null;
    Socket client=null;

    try
    {
        server=new ServerSocket(8888);
        System.out.println("Server telah online");
        client=server.accept();
        System.out.println("Client telah masuk dan bisa online");
    }

    catch(IOException e)
    {
        System.out.println(e.getMessage());
        System.exit(-1);
    }

    System.out.println("Silahkan chat");
    InputStream masuk=client.getInputStream();
    OutputStream keluar=client.getOutputStream();
    BufferedReader in=new BufferedReader(new
    InputStreamReader(client.getInputStream()));
    PrintStream out=new PrintStream(client.getOutputStream());
    BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
    String pesan;

    while (true)
    {
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
            out.println("sampai jumpa");
            break;
        }
    System.out.println("Client chat : "+pesan);
    System.out.print("Server : ");
    pesan=stdin.readLine();
    out.println(pesan);
    }

    server.close();
    client.close();
    in.close();
    out.close();
    stdin.close();
}

public static void main(String args[]) throws IOException 
{
    int pil;
    System.out.println("Masukkan Angka yang akan Anda Pilih");
    System.out.println("1. Server");
    System.out.println("2. Client");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan : ");
    Scanner input = new Scanner(System.in);
    pil = Integer.parseInt(input.next());
    switch(pil)
    {
    case 1:
    Server();
    break;
    case 2:
    Client();
    break;
    case 3:
    System.out.println();
    System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
    break;

    default :
    System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
    System.out.println("Silahkan Ulangi Lagi");
    break;
    }
}}

我知道凯撒密码是如何工作的,但我不知道如何在我的代码中实现它们。

如我在评论中所述:

public String encrypt(String input, int key){
    char[] chars = input.toUpperCase().replaceAll("[^A-Z]", "").toCharArray();
    for (int i = 0; i < chars.length; i++){
        chars[i] -= 65;
        chars[i] = (char)((chars[i] + key) % 26);
        chars[i] += 65;
    }
    return String.valueOf(chars);
}

public String decrypt(String input, int key){
    char[] chars = input.toUpperCase().replaceAll("[^A-Z]", "").toCharArray();
    for (int i = 0; i < chars.length; i++){
        chars[i] -= 65;
        chars[i] = (char)((chars[i] - key) % 26);
        chars[i] += 65;
    }
    return String.valueOf(chars);
}
公共字符串加密(字符串输入,int密钥){
char[]chars=input.toUpperCase().replaceAll(“[^A-Z]”,“”)。toCharArray();
for(int i=0;i

下面是一个运行示例:

句子应该是全大写的,没有空格、数字或其他符号,只有大写字母。然后将
String
更改为
char[]
,然后选择键(范围从0到26,假设您将使用英语字母表)。从
char[]中的每个
char
中减去65,然后在模26中添加键。然后将65添加到数组中的所有
char
s中,并将
char[]
转换回
String
。可能是@MatjažMav的重复,我不太明白,你能给我解释更多细节吗?顺便说一下,谢谢!在客户端,在向服务器发送文本之前。我已经添加了代码,但它不起作用,我的意思是它没有做任何事情。您询问如何实现Caesar密码,此方法使用输入字符串和密钥(数字介于0和25之间)。结果,它返回加密的输入。我不知道问题出在哪里,但我认为您应该从基本的控制台应用程序开始学习。我不确定,这段代码是你自己写的吗?我已经编辑了答案,请看一下运行示例。啊,我很困惑,哈哈,我把字符串改成了字符,但是运行代码的另一个函数是错误的,不管怎样