import java.util.
scanner*;
public class CaesarCipherProgram {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String k = "y";
while (k.equals("y") || k.equals("Y")) {
String plaintext = "";
int shift = 0;
System.out.println("1. Encrypt Message \n2. Decrypt Message ");
System.out.println("\nEnter your Choice : ");
int ch = sc.nextInt();
System.out.println("Enter Message : ");
plaintext = sc.next();
System.out.println("Enter the value by which each character in the plaintext message gets
shifted : ");
shift = sc.nextInt();
switch (ch) {
case 1:
String ciphertext = encrypt(plaintext, shift);
System.out.println("ciphertext : " + ciphertext);
break;
case 2:
String ptext = decrypt(plaintext, shift);
System.out.println("plaintext : " + ptext);
break;
default:
System.out.println("Option not Selected.. Please Select an option");
System.out.println("Do you want to continue? [y/n] : ");
k = sc.next();
private static String encrypt(String plaintext, int shift) {
String ciphertext = "";
for (int i = 0; i < plaintext.length(); i++) {
char alphabet = plaintext.charAt(i);
if (alphabet >= 'a' && alphabet <= 'z') {
alphabet = (char) (alphabet + shift);
if (alphabet > 'z') {
alphabet = (char) (alphabet + 'a' - 'z' - 1);
ciphertext += alphabet;
else if (alphabet >= 'A' && alphabet <= 'Z') {
alphabet = (char) (alphabet + shift);
if (alphabet > 'Z') {
alphabet = (char) (alphabet + 'A' - 'Z' - 1);
ciphertext += alphabet;
else {
ciphertext += alphabet;
}
return ciphertext;
private static String decrypt(String ciphertext, int shift) {
String decryptMessage = "";
for (int i = 0; i < ciphertext.length(); i++) {
char alphabet = ciphertext.charAt(i);
if (alphabet >= 'a' && alphabet <= 'z') {
alphabet = (char) (alphabet - shift);
if (alphabet < 'a') {
alphabet = (char) (alphabet - 'a' + 'z' + 1);
decryptMessage += alphabet;
else if (alphabet >= 'A' && alphabet <= 'Z') {
alphabet = (char) (alphabet - shift);
if (alphabet < 'A') {
alphabet = (char) (alphabet - 'A' + 'Z' + 1);
decryptMessage += alphabet;
else {
decryptMessage += alphabet;
return decryptMessage;