암호학(17)
-
C언어 공용체
공용체 선언은 구조체와 별반 다를게 없습니다. 하지만 초기화는 다르죠. 공용체 선언을 보시면 단 하나만 초기화를 하고 있습니다. 메모리를 공용하기 있기 때문에 공용체의 제일 첫번째 멤버변수 "age"만 초기화가 가능합니다. 그래서 "age"에 20을 할당하는 모습입니다. 붉은 네모를 보시면 유니온을 사용한 모습을 보실 수 있습니다. 구조체와 별반 다를 건 없습니다. 다만 출력 값을 보시면 "age"를 사용하다가 "grade"를 사용하면 "age"의 값은 사라짐을 볼 수 있습니다. 그 이유는 위에 설명했듯이 메모리를 공유하기 때문에 하나를 사용하면 하나는 데이터가 사라짐을 보실 수 있습니다. 메모리 공유의 내용만 빼면 대부분 구조체와 동일합니다.
2021.06.07 -
PBKDF2 (키 유도 알고리즘)
PBKDF2(패스워드 기반 키 유도 함수)는 Password-Based Key Derivation Function Version 2의 약자로서 사용자 패스워드를 기반으로 키(Key)를 유도하기 위한 대표적인 함수이다. 미국 NIST에서 승인한 알고리즘 사용자 패스워드에 해시함수, 솔트(Salt), 반복 횟수 등을 지정하여 패스워드에 대한 다이제스트(Digest)를 생성한다.
2021.06.04 -
c언어 / c++ for문(반복문) 차이점
c++ for(int i = 0 ; i < 10; i++) 가능 c언어 for(int i = 0 ; i < 10; i++) 불가능 for문안에 변수선언 불가능
2021.06.03 -
FPGA란?
FPGA(Field-programmable logic array)는 뭘까? 그 이름에서 나타나 있듯이 “프로그램 가능한 논리소자의 배열의 일종”이다. “programmable”은 “프로그램 가능한”이고 “logic”은 “논리소자”를 의미하며, “array”는 “배열”을 의미하는데 “Field”의 의미가 그답에서 보이지 않는것 같습니다만, 실제로는 array에 그 의미가 포함되어 있습니다. 밭, 논 같은 경작지를 생각해보면 넓은 평야(field)의 경우 바둑판처럼 규칙적인 구획을 가진 배열이지요. 가로 세로로 나누는 것은 사람들이 걸어다닐수 있는 “둑”과 같은 것이고요. 즉 FPGA는 하나의 밭의 구역과 같은 로직블럭이 넓은 평야에 있는 밭처럼 규칙적, 반복적으로 배치되어 있으며, 그 각각의 로직 블럭을 ..
2021.06.01 -
sha-1 알고리즘 코딩
#include #include // strlen 쓰려고 #include //memcpy 쓰려고 #define block_size 512 #define round 80 #define static_word 32 using namespace std; void text_move(char *, int); int count1; void char_to_int(char text); void boohowha(int a); int binary_text[block_size] = { 0, }; void length_boohowha(int a); int W[round][static_word] = { 0, }; void W_SET(); void length_boohowha(unsigned int, int[]); void f1(..
2021.05.14 -
sha-1
임의의 길이의 입력데이터를 160bit의 출력데이터로 바꾸는 것. NSA에서 창안하였음 SHA-1은 2^64보다 작은 입력 데이터를 160-BIT의 고정 크기로 출력한다. 40글자, 160-bit 출력이므로 글자당 4bit, 글자가 16진수(0~16) 이므로 4bit로 표현
2021.05.13