LEA로 파일 암호화 사용한 것이 있었다.


 2016/04/01 - [분류 전체보기] - LEA 암호화 라이브러리 테스트


 여기서 사용한 것으로 LEA 암호화 라이브러리를 사용해서 파일을 암호화 해보았다.


 전에 사용하는 것에서 LEA에는 32Byte에서 설정되는 키가 설정이 되어 있고, IV에 관련되서도 설정이 제대로 되어 있지 않았다.


 이것을 해결하기 위해서 SHA-256을 사용할려고 한다.


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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <stdlib.h>
 
#include <string>
 
#include "include\config.h"
#include "include\lea.h"
 
#include "KISA_SHA256.h"
 
 
unsigned char mk[32= { 0, };
 
unsigned int mk_len = 32;
 
char ctr_enc[16= { 0, };
 
unsigned char pyn_buffer[16= { 0, };
//unsigned int pyn_buffer_len = 16;
 
char cyp_buffer[16];
//unsigned int cyp_buffer_len = 16;
 
int main()
{
    size_t M = 0;
 
    SHA256_INFO sha256info;
 
    LEA_KEY key;
 
    FILE *fip = NULL;
    FILE *fop = NULL;
 
    //fip = fopen64("test", "rb");
    //fop = fopen64("test.LEA_CTR", "wb");
 
    fopen_s(&fip, "test""rb");
    fopen_s(&fop, "test.lea""wb");
 
    if (fip == NULL)
    {
        return -1;
    }
 
    if (fop == NULL)
    {
        return -1;
    }
    
    char password[256]="TestMessage";
 
    SHA256_Init(&sha256info);
    SHA256_Process(&sha256info, (unsigned char*)password, strlen(password));
 
    SHA256_Close(&sha256info, mk);
 
    lea_set_key(&key, mk, mk_len);
 
    M = fread(pyn_buffer, sizeof(char), sizeof(pyn_buffer), fip);
    lea_ecb_enc((unsigned char*)cyp_buffer, pyn_buffer, M, &key);
 
    if (fwrite(cyp_buffer, sizeof(char), M, fop) == 0)
    {
        fclose(fip);
        fclose(fop);
        _unlink("test.lea"); // 에러난 파일 지우고 종료
        return -1;
    }
 
    strcpy(ctr_enc, cyp_buffer);
 
    while ((M = fread(pyn_buffer, sizeof(char), sizeof(pyn_buffer), fip)) != NULL)
    {
        lea_ctr_enc((unsigned char*) cyp_buffer, pyn_buffer, M, (unsigned char*)ctr_enc, &key);
        //lea_ctr_dec(cyp_buffer, pyn_buffer,M,ctr_enc,&key);
        if (fwrite(cyp_buffer, sizeof(char), M, fop) == 0)
        {
            fclose(fip);
            fclose(fop);
            _unlink("test.lea"); // 에러난 파일 지우고 종료
            return -1;
        }
        //lea_ctr_enc(cyp_buffer, pyn_buffer, pyn_buffer_len, ctr_enc, &key);
        //fwrite(cyp_buffer, cyp_buffer_len, 1, fop);
    }
 
    fclose(fip);
    fclose(fop);
 
    return 0;
}
 
 
 
 
cs


 이렇게 앞부분 16Byte는 ECB모드를 사용하고, 나머지는 CTR모드를 이용해서 암호화 시킨다.

Posted by JunkMam
,