Estou tendo dificuldades com a lógica em meu código

Estou criando uma aplicação que recebe um número de 4 dígitos pelo usuário e faz uma encriptação do mesmo utilizando um algoritmo.

Os passos são o seguinte:

1 - Ler um número de 4 digitos;

2 - Criptografar este número com o seguinte algoritmo: substitua cada dígito pelo resultado da adição de 7 ao dígito, obtendo o restante depois da divisão do novo valor por 10. Troque então o primeiro dígito pelo terceiro e o segundo dígito pelo quarto;

3 - Imprimir o número criptografado;

4 - Criar uma aplicação separada que descriptografe um número criptografado entrado pelo usuário (revertendo o esquema de criptografia).

Eu consegui realizar os três primeiros passos, mas encontro muita dificuldade com o quarto passo, especificamente ao reverter o esquema de criptografia. Aqui vai o código:


import java.util.Scanner;

public class Encrypt {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int i; //contador
		int num; //inteiro de 4 dígitos
		int digito; //digito do inteiro
		String digitoString = ""; //armazena os digitos em String
		String string; //string que vai possibilitar o acesso aos digitos individualmente
		
		System.out.println("Enter a 4 digit integer: ");
		num = in.nextInt();
		
		//convertendo o número para string 
		string = Integer.toString(num);
		
		//encriptando cada digito
		for (i=0; i< string.length(); i++) {
			
			digito = Integer.parseInt(String.valueOf(string.charAt(i)));																																
			digito = (digito+7)%10; 						
			digitoString += String.valueOf(digito);
		}
		
		//transformar o primeiro dígito em terceiro e o segundo dígito em quarto
		System.out.print("\n\nEncrypteded number: ");
		char dig1 = digitoString.charAt(0);
		char dig2 = digitoString.charAt(1);
		char dig3 = digitoString.charAt(2);
		char dig4 = digitoString.charAt(3);
	
		//trocando os dígitos
		dig1 = dig3;
		
		dig2 = dig4;
		
		//imprimindo o numero criptografado
		String numEncriptado = dig1+""+dig2+""+dig3+""+dig4;
		
		System.out.println("\n"+numEncriptado);
		
	
	}

}

Gostaria que me guiassem com a realização do quarto passo e no aprimoramento deste código, se possível.

Aqui não estás a trocar os digitos, estás a colocar o 1 igual ao 3 e o 2 igual ao 4. E estás a descartar completamente o anterior 1 e 3;

Se tirares esta parte, podes simplesmente fazer

String numEncriptado = dig3+""+dig4+""+dig1+""+dig2;

Para descriptografar, fazes as operações pela ordem inversa.
Primeiro trocas os digitos, depois, uma vez que fazes mod 10, em vez de somar 7, somas 3.