[crypto] HybridCrypto Module

View Comments

[crypto] HybridCrypto Module

하이브리드 암호화 모듈을 하나 만들었습니다.


크게 새로운 방식은아니구요.


공개키, 비밀키 암호화 기반의 기본적인 하이브리드형 모듈입니다.


Https를 기본적으로 사용하겠지만. 서비스 성질에따라 보안을 더신경써야할 것들에 더해 사용하시면 좋을 듯합니다.


송신자는 전달하고자하는 메세지를 비밀키로 암호화 합니다. 다음 공개키암호화 방식으로 비밀키와 비밀키해시를 암호화하고, 이세가지 데이터를 전송합니다.


수신자는 개인키로 해당 암호화된 비밀키를 복호화하여 비밀키를 알아내고 해당비밀키로 다시 진짜메세지를 복호화합니다.


참고로 키교환은 따로하지않으며 기존에 클라이언트와 서버에 각각 키들이 존재해야합니다. 키교환 자체를 완벽하게하려면 기존에


최초 키를 박아두고, 전송옵션을 두어 위와같은방식으로 교환하는게 보다 안정적입니다.


또한 이러한 방식은 통신구간암호화에 보다 강력합니다.


기본적인 내용이지만 구현하기 손이 많이가는내용들이라 사용하시면 편할거에요.


디테일한 코드 설명은 npm 내부에 기입되어있으니 참고하시면 됩니다.


https://www.npmjs.com/package/hybridCrypto

0 Comments (+add yours?)

Leave a Reply

Tracbacks (+view to the desc.)

#04 typedef

View Comments

#04 typedef

 *typedef 는 타입 정의한다.
=>typedef (타입) (변경할이름)
     - typedef int INT
      INT a = 10; 과같이 사용가능

*예제가 갑
typedef stuct point {
     int x; 
     int y;
     struct point *p
}Point;

Point a = {1,3};
Point b = {100,200};
a.p = &b;
printf("%d %d",a.p->x,a.p->y);
or
printf("%d %d",(*a.p)->x,(*a.p)->y);
*구조체 기반 callby value, callby reference

typedef struct point{

int x;
iint y;
}Point;

void showpoint (Point pos){
     pos.x = 100;
     pos.y = 200;
     printf("%d %d\n",pos.x,pos.y);//결과가 100,200
};
//main

point a = {1,2};
point b = {100,200};
showpoint(a);
printf("%d %d",a.x,a.y);//결과가 1,2

- callbyValue로  pos에 a 의복사가 일어난다. 복사된 데이터기때문에 실제 값이 바뀌지 않는다.

typedef struct point {

int x;
int y;

};

void showposRef (Point *pos){

     (*pos).x=100;
     pos->y = 200;
     printf("%d %d",pos->x,pos->y); //100,200나옴

};

//main

Point a= {10,20};

showposRef(&a);

printf("%d %d",a.x,a.y); // 100,200 나옴 바뀜 

- callbyRef임으로 실제 주소값이 넘어감으록 값이 바뀐다.


*구조체 복사
Point a= {1,2};
Point b; 
b=a;
b에 a 가 복사된다.

*union 과 struct

typedef struct sbox{
int x;
double z;
int y;
}Point;
typedef union ubox{
int x;
int x;
double z;

}UBOX;

//main
SBOX s;
UBOX u;
printf("%p %p %p ",&s.x,&s.y,&s.z);
//주소가 4 4 8 단위씩 뛴다.
printf("%p %p %p ",&u.x,&u.y,&u.z);
//주소가 8사이즈로 멈춰있다. 가장크게 잡혀있음.
printf("%d %d",sizeof(SBOX),sizeof(UBO);
//sbox는 4+4(패딩)+8+4+4(패딩) 24바이트
//Ubox는 가장큰 double 8바이트


*유니온의 활용

typedef struct dbs{
   
unsigned int a;
   
unsigned int b;
}DBS;

typedef struct uboxs{
   
int insertNum;
   
DBS *p ;
}UBOXs;
//main   
   
UBOXs ubox;
   
scanf("%d",&(ubox.insertNum));
    pritntf("upper %d %d",ubox.p->a,ubox.p->b);


*enum


enum{
do,re,me};

//main
do =0 re =1 me = 2

enum{
do=3,
re,
me = 5
} ;
//main 3,4,5  re는 앞의 상수에 +1

typdef enum doreme{
doo,re,mee
}DOREME;


'C Language > C basis' 카테고리의 다른 글

#03 구조체와 포인터  (0) 2016.04.27
#02파일분할과 헤더파일  (0) 2016.04.27
#01 선행처리기  (0) 2016.04.27

0 Comments (+add yours?)

Leave a Reply

Tracbacks (+view to the desc.)

#03 구조체와 포인터

View Comments

#03 구조체와 포인터

*예제가 갑이다

struct point{

int x;

int y;

};


//main


struct point a ={1,2};

struct point b = {100,200};


//포인터 p는 a 의 주소를 가진다.

struct point *p = &a;


printf("%d %d",(*p).x,(*p).y);

혹은

printf("%d %d",p->x,p->y); 

로 출력할수있다.


*구조체와  포인터
struct numbers {

int num1;

int num2;

};

struct point{

int x;

int y;

struct numbers num;

};


//main


struct nubmers a=  {1,2};

struct point b ={100,200,&a};


printf("%d %d %d %d",b.x,b.y,b.num->num1,b.num->num2);//100 200 1 2

*구조체와 자기자신포인터

struct point {

int x;

int y;

struct point p;

};


//main

struct point a = {2,4};

struct point b = {1,3};

a.p = &b;

printf("%d %d",a.p->x,a.p->y);//1 3





'C Language > C basis' 카테고리의 다른 글

#04 typedef  (0) 2016.04.27
#02파일분할과 헤더파일  (0) 2016.04.27
#01 선행처리기  (0) 2016.04.27

0 Comments (+add yours?)

Leave a Reply

Tracbacks (+view to the desc.)

Newer Entries Older Entries