Base64 encode

공부/c++ 2014.05.14 00:47



바이러스 만들기에 쓸 base64

디코드도 짜야되는데 귀차늠

다른 소스들을 보니 비트연산자 이용하던데

그냥 무식하게 짬

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include "iostream"
#include "string"
#define CaseEnum(a) #a
 
using namespace std;
int result[16][8] = { 0, };
int binary[16][6] = { 0 };
int result_d[16] = { 0 };
char encoded[17];
 
 
 
 
const char base64_table[] =
{
        'A''B''C''D''E''F''G''H',
        'I''J''K''L''M''N''O''P',
        'Q''R''S''T''U''V''W''X',
        'Y''Z''a''b''c''d''e''f',
        'g''h''i''j''k''l''m''n',
        'o''p''q''r''s''t''u''v',
        'w''x''y''z''0''1''2''3',
        '4''5''6''7''8''9''+''/'
};
 
int cnt_x = 7, cnt_y = 0;
 
int int_to_binary(int num);
int binary_cut_6();
int binary_to_demincal();
int demical_to_char();
 
int main()
{
    string a = "";
    int b;
    int length = a.length();
 
    for (int i = 0; i < length; i++)
    {
        b = (int)a.at(i);
        int_to_binary(b);
        cnt_x = 7;
        cnt_y++;
    }
 
 
 
    for (int i = 0; i < 12; i++)
    {
        cout << a.at(i) << " : ";
        for (int j = 0; j < 8; j++)
            cout << result[i][j];
        cout << endl;
    }
    cout << endl;
 
 
    binary_cut_6();
 
    for (int i = 0; i < 16; i++)
    {
        cout << i << " : ";
        for (int j = 0; j < 6; j++)
            cout << binary[i][j];
        cout << endl;
    }
 
    binary_to_demincal();
    demical_to_char();
 
    string r = encoded;
 
    cout << r << endl;
 
 
    return 0;
}
 
int int_to_binary(int num)
{
    if (num >= 1)
    {
        if (num % 2)
            result[cnt_y][cnt_x] = 1;
        else
            result[cnt_y][cnt_x] = 0;
        cnt_x--;
        num = num / 2;
 
        return int_to_binary(num);
    }
 
    return 0;
}
 
int binary_cut_6()
{
    int cnt_b_x = 0, cnt_b_y = 0;
    for (int i = 0; i<12; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if (cnt_b_x>5)
            {
                cnt_b_x = 0;
                cnt_b_y++;
            }
 
            if (result[i][j] == 1)
                binary[cnt_b_y][cnt_b_x] = 1;
            cnt_b_x++;
 
        }
    }
    return 0;
}
 
int binary_to_demincal()
{
    int plus = 0;
    for (int i = 0; i<16; i++)
    {
        for (int j = 0; j<6; j++)
        {
            plus += binary[i][j] * pow(2, 6 - j);
        }
        result_d[i] = plus;
        plus = 0;
    }
    return 0;
}
 
int demical_to_char()
{
    for (int i = 0; i<16; i++)
        encoded[i] = (char)base64_table[result_d[i]];
    return 0;
}
 
 


'공부 > c++' 카테고리의 다른 글

win api (folder, file)  (0) 2014.05.16
boost access in to all directory  (5) 2014.05.15
boost directory접근  (0) 2014.05.15
Base64 encode  (3) 2014.05.14
배열  (0) 2014.03.24
c++ 첫코드  (0) 2013.11.25

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글  3개가 달렸습니다.
  1. http://stackoverflow.com/questions/7053538/how-do-i-encode-a-string-to-base64-using-only-boost
  2. http://www.adp-gmbh.ch/cpp/common/base64.html
  3. http://www.webbiscuit.co.uk/2012/04/02/base64-encoder-and-boost/
secret