암호에서 비밀번호를 사용할때, 해시함수를 사용한다.
해시 함수는 단방향(일방적)인 암호방식을 사용할때, 혹은 암호문과 메세지의 변동이 있는지의 유무를 확인할 수 있다.
보통은 비밀번호에 사용한다.(그리고 해시함수를 이용하면, 파일이 깨졌는지의 유무도 확인 할 수 있다.)
해시란, 특정 덩어리를 특정 크기만큼으로 줄이는 방식을 뜻하는데. 압축이랑은 별개로 해당 값(해시 값)이 특정 덩어리를 뜻하긴 하지만, 해시 값으론 특정 덩어리를 알 수 없게 되어 있어서 압축과는 다르다.(압축은 압축한 대상이 특정 덩어리로 변환 될 수 있는 양방향성을 띈다.)
여기서 유명한 SHA256을 사용할려고 한다.(필자는 SHA256을 이용해서 파일의 깨짐 유무를 확인할때 사용하기도 한다.)
KISA에서 소스를 제공해주기도 한다.
링크 : https://seed.kisa.or.kr/iwt/ko/bbs/EgovReferenceDetail.do?bbsId=BBSMSTR_000000000002&nttId=79
외국에서는 C++로 객체화 해서 만들어져 있다.
링크 : http://www.zedwood.com/article/cpp-sha256-function
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include "KISA_SHA256.h" #include <stdio.h> #include <stdlib.h> #include <tchar.h> int main(int argc, char** argv) { //변수 초기화. FILE *fp = NULL; unsigned char buffer[2048] = { 0, }; unsigned char result[32] = { 0, }; int read = 0; int loop_number = 0; //SHA256 변수 초기화. SHA256_INFO sha256_info; SHA256_Init(&sha256_info); //파일 읽기. //fp = fopen("Test.txt", "rb"); Visual Studio 옛버전을 사용할 경우. 이것을 사용할 것. Visual Studio에서 안전성 문제로 인한 함수 개선을 하였음. fopen_s(&fp, "Text.txt", "rb"); if (fp == NULL) { printf("Error : File not find.\n"); system("pause"); return -1; } while ((read = fread(buffer, 2048, 1, fp)) != 0) { SHA256_Process(&sha256_info, buffer, read); } SHA256_Close(&sha256_info, result); for (loop_number = 0; loop_number < 32; loop_number++) { printf("%02x", result[loop_number]); } system("pause"); return 0; } | cs |
'연습' 카테고리의 다른 글
LEA로 파일 암호화 사용하기. (0) | 2017.01.17 |
---|---|
Visual Studio 2015로 안드로이드 만들기. (0) | 2017.01.16 |
Google Photos를 사용 후기. (0) | 2017.01.14 |
Visual Studio 2015에서 masm 사용하는 방법 (0) | 2017.01.13 |
Visual Studio 설치된 Android SDK등의 데이터 옮기는 방법. (0) | 2017.01.12 |