c언어로 만든 간단한 RSA

C언어로 만든 간단한 RSA.

안녕하세요.

오늘은 공개키 암호 알고리즘 중 하나인 RSA 코드입니다.

그냥 공부하면서 대충 만든 겁니다.

  • 특정 파일/디렉토리 명을 주면 모든 정보를 출력
  • 권한을 700으로 변경하는 프로그램

코드

코드는 다음과 같습니다.

#include<stdio.h>
/*ras*/
long pow_(long i,long j,long k){
	double l,temp,p=1;
	for(temp=0;temp < j ; temp++){
		p=(p*((double)i));
		l=(long)(p/k); //소수점 삭제.
		p=p-(l*k);
	}
	return (long)p;
}
int encryption(int input,int e, int n){
	int i=pow_(input,e,n);
	printf("입력받은 수의 rsa암호화 결과= %d\n",i);
	return i;
}
int Decryption(int input,int d, int n){
	int i=pow_(input,d,n);
	printf("암호화된 수의 rsa복호화 결과= %d\n",i);
	return i;
}
int main(){
	int input;
	scanf("%d",&input);
	int p=17,q=11;
	int e=7, d=23, N=p*q;
	input=encryption(input,e,N);
	Decryption(input,d,N);
	return 0;
}

 

알고리즘.

두 소수 p와 q를 선택한다.

(위의 코드에서는 17과 11을 선택.)

φ(N)=(p-1)(q-1)=160

160보다 작으면서 φ(N)과 서로소인 수 e를 선택한다.

(위의 코드에서는 7.)

d<160이면서 demodφ(N)=1인 수 d를 결정한다.

(위의 코드에서는 d*7mod160=1이므로 23이 d가 된다.)

공개키={7,187}, 개인키={23,187}이 된다.

실행결과.

그래서 위의 코드를 실행해보면 이런 결과가 나온다.

Designed by JB FACTORY