RSA 질문입니당

#include <iostream>

using namespace std;

int is_prime(int n) {
	int i, sqrn;
	sqrn = (int)sqrt(n);
	for (i = 2; i <= sqrn; i++) {
		if (n%i == 0)
			return false;
	}
	return true;
}

//소수판별기.

int find_d(int e,int n) {
	for (int d = 2; d < 10000; d++) {
		if ((e * d) % n == 1)
			return d;
	}
	return false;
}
// 최소의 D값 찾기.

int main() {

	cout << "두개의 소수를 입력하세요" << endl;
	int p, q;
	cin >> p >> q;
	if (is_prime(p) && is_prime(q) != true){
		cout << "소수가 아닙니다" << endl;
		return 0;
	}

	int n = p * q;
	int Euler = (p - 1)*(q - 1);
	int e = Euler - 1;
	int d = find_d(e, n);
	//public key n,e
	cout << "개인키 d =" << d << endl;
	cout << "공개키 n =" << n << ", e = " << e << endl;

	// 공개키를 이용한 암호화.

	char arr[30];
	
	cout << "평문을 입력하세요: ";
	cin >> arr;

	for (int i = 0; arr[i] != '\0'; i++)
		arr[i] = (arr[i] ^ e) % n;

	cout << endl << "암호화된 문장: " << arr;

	for (int i = 0; arr[i] != '\0'; i++)
		arr[i] = (arr[i] ^ d) % n;

	cout << endl << "복호화된 문장: " << arr;

	return 0;
}

키는 어떻게 만들긴 했는데 암호화랑 복호화를 어떻게 해야할지 감이 안오네요,
뭐가 틀린 거지

^는 bitwise xor입니다
의도하신대로 쓰려면 pow(x, n)으로 쓰셔야 합니다

제대로 작동한다면 그냥 함수로만 빼내면 되는거아닙니까?