기본 콘텐츠로 건너뛰기

추천 가젯

OpenSSL 명령어로 비대칭 암호화하기 (공개키로 암호화하고 비밀키로 복호화하기)

비대칭 암호화 암호화 키와 복호화 키가 서로 다른 비대칭 암호의 특징을 이용하여 공개키로 암호화하고 비밀키로 복호화할 수 있다. 우선 이전에 생성한 private.pem 과 public.pem 이 필요하다. 비밀키는 계속 가지고 있고, 통신을 하고자 하는 사람에게 공개키를 전달한다. 그 다음 공개키를 가진 사람이 공개키로 암호화하고, 암호화한 결과를 전달한다. 이 과정은 도청되어도 비밀키를 알아낼 수 없기에 원문을 도청자가 알아낼 수 없다. 원문 준비하기 원본은 다음과 같이 준비한다. 주로 대칭 암호화를 사용할 키를 전달할 때 공개키 암호를 보조하여 사용하므로, 여기서는 키파일을 생성하겠다. echo -n "key=" > key.txt openssl rand -hex 32 >> key.txt echo -n "iv=" >> key.txt openssl rand -hex 16 >> key.txt 그러면 key와 iv가 포함된 파일이 완성된다. 이 파일을 안전하게 전달하기 위해 암호화한다. 공개키로 암호화하기 openssl pkeyutl -encrypt -pubin -inkey [public.pem] -in [key.txt] -out encrypted.bin openssl pkeyutl : openssl에서 제공하는 low-level 공개키/개인키 연산 유틸리티인 pkeyutl 을 이용한다. -encyprt : 암호화를 한다. -pubin : 입력받을 키의 종류를 공개키로 지정한다. -inkey [입력키] : 입력받을 키를 지정한다. 암호화를 할 때는 공개키를 지정한다. 필자는 'public.pem'으로 지정하였다. -in [입력파일] : 입력파일을 지정한다. 암호화를 할 때는 원문을 지정한다. 필자는 위에서 생성한 'key.txt'로 지정하였다. -out [출력파일] : 출력파일을 지정한다. 출력된 결과는 암호문이므로 저장될 이름을 지정한다. 필자는 'e...

숫자를 한글로 출력해 보자. 과제

#include <stdio.h>

void main()
{
int input;
int hundred, ten, one;

printf("세 자리 양수를 입력하시오 : ");
scanf_s("%d",&input);
if (input > 999 || input<100)
{
printf("마 내가 세자리 양수라 했쟤?\n");
return 0;
}

hundred = (input - (input % 100))/100; //백의 자리 구하기
ten = (input - hundred*100 - (input % 10))/10; //십의 자리 구하기
one = input % 10; //일의 자리 구하기


int temp;
for (int i = 0; i < 3; i++) //백의 자리, 십의 자리, 일의 자리 출력
{
if (i == 0) //백의 자리 출력
temp = hundred;
else if (i == 1) //십의 자리 출력
temp = ten;
else // i==2와 같음. 일의 자리 출력
temp = one;

switch (temp) //실제로 출력하는 부분
{
case 0:
printf("영");
break;

case 1:
printf("일");
break;

case 2:
printf("이");
break;

case 3:
printf("삼");
break;

case 4:
printf("사");
break;

case 5:
printf("오");
break;

case 6:
printf("육");
break;

case 7:
printf("칠");
break;

case 8:
printf("팔");
break;

case 9:
printf("구");
break;
}
}
}

댓글

가장 많이 본 글