Criptografar/Descriptografar ASCII

To tentando fazer um programa em java q criptografa e descriptografa uma string digitada pelo usuário (apenas letras/caracteres alfanuméricos) e estou com problema na parte de descriptografar. Estou limitando a criptografia pra retornar apenas letras (baseado na tabela ASCII) e esta funcionando até ai, mas n consigo fazer o caminho inverso, apenas com as letras minusculas, com a maiúsculas n consigo fazer funcionar, n sei se é erro de matemática ou lógica msm, desde já obrigado. Código abaixo sem a parte das letras maiúsculas.
(OBS: iniciante em java e novo no fórum se é uma duvida mt besta ou fiz algo de errado na criação do tópico me desculpem)

package Main;

import java.util.Scanner;

public class Criptografia {
    public static void main(String args[]){
        Scanner read = new Scanner(System.in);
        
        String sSenha;
        int iCriptografia;
        String sCriptografada = "";
        String sDescriptografada = "";
        
        System.out.println("Digite a senha q deseja criptografar:");
        sSenha = read.nextLine();
        
        char[] cSenha = new char[sSenha.length()];
        
        int[] iAscii = new int[sSenha.length()];
        
        for(int i = 0; i < cSenha.length; i++){
            iAscii[i] = (int) sSenha.charAt(i);
        }
        
        //------------------- Criptografar ----------------------------------
        
        for(int i = 0; i < cSenha.length; i++){
            if(iAscii[i] >= 97 && iAscii[i] <= 102){
                iCriptografia = iAscii[i] - 15;
            }else{
                iCriptografia = iAscii[i] + 15;
            }
            
            if(iCriptografia >= 122){
                iCriptografia -= 20;
            }
            
            cSenha[i] = (char) iCriptografia;
            sCriptografada += cSenha[i];
        }
        
        System.out.println("Criptografia: " + sCriptografada);
        
        //------------------- Descriptografar ----------------------------------
        
        for(int i = 0; i < cSenha.length; i++){
            iAscii[i] = (int) sCriptografada.charAt(i);
        }
        
        for(int i = 0; i < cSenha.length; i++){
            if(iAscii[i] < 90){
                iCriptografia = iAscii[i] + 15;
            }else{
                iCriptografia = iAscii[i] + 20;
            
                if(iCriptografia >= 122 && iCriptografia < 138){
                    iCriptografia -= 15;
                }else{
                    iCriptografia = iAscii[i] - 15;
                }
            }
            
            cSenha[i] = (char) iCriptografia;
            sDescriptografada += cSenha[i];
        }
        
        System.out.println("Descriptografado: " + sDescriptografada);
    }
}

Olá,
está somente praticando ou desenvolvendo uma aplicação para usar mesmo? pois este método de “criptografia” é facilmente quebrado.

Somente praticando