기본 콘텐츠로 건너뛰기

추천 가젯

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...

[과제] 구조체 배열 메모리 동적 할당


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct Lotte_Giants
{
 char name[20];
 int age;
 int income;
 float BatAVR;
};

typedef struct Lotte_Giants 꼴데;

int main()
{
 int members, i;
 float temp1 = 0, temp2 = 0;
 printf("몇 명의 선수입니까? : ");
 scanf_s("%d", &members);
 printf("%d명의 선수\n", members);
 꼴데 *선수 = NULL; //꼴데 선수는 없어 다 동네야구지
 선수 = (꼴데*)malloc(sizeof(꼴데) * members); //마! 메모리 안 찬다 고마!

 for (i = 0; i < members; i++)
 {
  printf("%d번째 선수입니다!\n", i + 1);
  getchar();
  printf("이름 : ");
  gets(선수[i].name);
  printf("연령 : ");
  scanf_s("%d", &선수[i].age);
  printf("연봉 : ");
  scanf_s("%d", &선수[i].income);
  printf("타율 : ");
  scanf_s("%f", &선수[i].BatAVR);
  printf("\n");
 }

 //system("cls");
 printf("%9s %4s %10s %7s\n", "이름", "연령", "연봉", "타율");
 for (i = 0; i < members; i++)
  printf("%9s %4d %10d %7.3f\n", 선수[i].name, 선수[i].age, 선수[i].income, 선수[i].BatAVR);

 printf("평균 연령 : ");
 for (i = 0; i < members; i++)
 {
   temp1 += 선수[i].age;
   temp2 += 선수[i].BatAVR;
 }
 //free(선수) //마 롯데 니놈은 자유따위 없다!
 printf("%.2f\n", (float)temp1 / members);
 printf("평균타율 : ");
 printf("%.3f\n", (float)temp2 / members);


 system("pause");
}
실행결과


댓글

가장 많이 본 글