forked from TolgaTatli/Moon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCodeup_SHA256.html
492 lines (393 loc) · 76.9 KB
/
Codeup_SHA256.html
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
<script>
function SHA256(s){
var chrsz = 8;
var hexcase = 0;
function safe_add (x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
function R (X, n) { return ( X >>> n ); }
function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
function core_sha256 (m, l) {
var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
0x3956C25B, 0x59F111F1,
0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786,
0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,
0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B,
0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A,
0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
0x510E527F,
0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
var W = new Array(64);
var a, b, c, d, e, f, g, h, i, j;
var T1, T2;
m[l >> 5] |= 0x80 << (24 - l % 32);
m[((l + 64 >> 9) << 4) + 15] = l;
for ( var i = 0; i<m.length; i+=16 ) {
a = HASH[0];
b = HASH[1];
c = HASH[2];
d = HASH[3];
e = HASH[4];
f = HASH[5];
g = HASH[6];
h = HASH[7];
for ( var j = 0; j<64; j++) {
if (j < 16) W[j] = m[j + i];
else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j -
7]), Gamma0256(W[j - 15])), W[j - 16]);
T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f,
g)), K[j]), W[j]);
T2 = safe_add(Sigma0256(a), Maj(a, b, c));
h = g;
g = f;
f = e;
e = safe_add(d, T1);
d = c;
c = b;
b = a;
a = safe_add(T1, T2);
}
HASH[0] = safe_add(a, HASH[0]);
HASH[1] = safe_add(b, HASH[1]);
HASH[2] = safe_add(c, HASH[2]);
HASH[3] = safe_add(d, HASH[3]);
HASH[4] = safe_add(e, HASH[4]);
HASH[5] = safe_add(f, HASH[5]);
HASH[6] = safe_add(g, HASH[6]);
HASH[7] = safe_add(h, HASH[7]);
}
return HASH;
}
function str2binb (str) {
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz) {
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
}
return bin;
}
function Utf8Encode(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
function binb2hex (binarray) {
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++) {
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
s = Utf8Encode(s);
return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
}
var youranswer = prompt('이 글을 열람하려면 암호를 입력해야 합니다.\n암호를 입력하시오.');
if(youranswer==null) {
alert('암호를 입력하지 않으면 글을 열람할 수 없습니다.');
window.location.href="http://workspace.moonwalk.cf";
}
else if(SHA256(youranswer)== '7e66b5dd3d158d14ba3300cad5702ee6d72befaec37890eed25c91687bb649df')
alert('축하합니다.\n정확한 암호입니다! :)\n\n노가다라도 하셨나요?');
else if(SHA256(youranswer)== '397a70ba1a2fb7c9f94a74c825d4183eee1e2f65f7f8e336ce56c68ce702752b')
alert('축하합니다.\n정확한 암호입니다 :)');
else if(SHA256(youranswer)=='b6ae0c4cba988ed0905f639d587a4981e52e67d921fbf5423eea5b2381c13ffb')
alert('작성자의 개인 암호입니다.\n알아내셨네요 ;ㅅ;');
else {
alert('틀린 암호입니다. 다시 시도하세요.');
alert('확인을 누르면 힌트 글로 리다이렉트 됩니다.');
location.href="http://codeup.kr/d_thread.php?tid=5495";
}
</script>
<noscript>
<meta http-equiv="refresh" content="0; url=http://workspace.moonwalk.cf"></meta>
</noscript>
<body class=" pace-done"><div class="pace pace-inactive"><div class="pace-progress" data-progress-text="100%" data-progress="99" style="transform: translate3d(100%, 0px, 0px);">
<div class="pace-progress-inner"></div>
</div>
<div class="pace-activity"></div></div>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="코드업 - 개인 강의">
<meta name="keywords" content="코딩,C언어,프로그래밍,정보올림피아드,알고리즘,문제해결">
<meta name="author" content="코드업">
<link rel="icon" href="favicon.ico">
<title>개인 강의</title>
<script async="" src="https://www.google-analytics.com/analytics.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="./template/bs/codeup.css" type="text/css">
<style>
br,p { margin:0px; }
.syntaxhighlighter { padding-bottom: 1px; }
</style>
<header class="header clearfix">
<nav id="navground" class="navbar fixed-top navbar-expand-lg navbar-light bg-light ">
<a class="navbar-brand font-weight-bold" href="index.php">CodeUp</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="discuss.php">게시판</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">문제</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="problemset.php">문제</a>
<a class="dropdown-item" href="problemsetsol.php">문제집</a>
<a class="dropdown-item" href="recentprob.php">최근 100문제</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">수업</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="class.php?class_id=0">최근 수업</a>
<a class="dropdown-item" href="class.php?school=0">내 수업</a>
<a class="dropdown-item" href="class.php">학교 수업</a>
<a class="dropdown-item" href="classop.php">개인 강의</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="status.php">채점상황</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">순위</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="ranklist.php">전체 순위</a>
<a class="dropdown-item" href="ranklist_1.php">그룹내 순위</a>
<a class="dropdown-item" href="ranklist_g.php">그룹별 순위</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">이벤트</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="contest.php">이벤트</a>
<a class="dropdown-item" href="recent.php">해외 대회</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">도구</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="tools/memo.html">아이디어 연습장</a>
<a class="dropdown-item" href="random.php">랜덤 번호 뽑기</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">FAQ</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="faqs.ko.php">FAQ</a>
<a class="dropdown-item" href="edufaq.php">교사 권한 FAQ</a>
<a class="dropdown-item" href="info.php">코드업 통계</a>
<a class="dropdown-item" href="book.php">도서 안내</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">내 정보
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="./userinfo.php?user=kimgihong38"><svg class="svg-inline--fa fa-user fa-w-14" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="user" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path></svg><!-- <i class="fas fa-user"></i> --> kimgihong38</a>
<a class="dropdown-item" href="./modifypage.php"><svg class="svg-inline--fa fa-user-edit fa-w-20" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="user-edit" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""><path fill="currentColor" d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"></path></svg><!-- <i class="fas fa-user-edit"></i> --> 정보수정 및 탈퇴</a>
<a class="dropdown-item" href="./mytheme.php"><svg class="svg-inline--fa fa-code fa-w-20" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="code" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""><path fill="currentColor" d="M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"></path></svg><!-- <i class="fas fa-code"></i> --> 코딩 스타일 설정</a>
<a class="dropdown-item" href="./rival.php"><svg class="svg-inline--fa fa-users fa-w-20" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="users" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""><path fill="currentColor" d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path></svg><!-- <i class="fas fa-users"></i> --> 나의 라이벌</a>
<a class="dropdown-item" href="./mail.php"><svg class="svg-inline--fa fa-envelope fa-w-16" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg><!-- <i class="fas fa-envelope"></i> --> 쪽지 </a>
<a class="dropdown-item" href="./setschool.php"><svg class="svg-inline--fa fa-school fa-w-20" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="school" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""><path fill="currentColor" d="M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"></path></svg><!-- <i class="fas fa-school"></i> --> 선생님ID 등록</a>
<a class="dropdown-item" href="./setteacher.php"><svg class="svg-inline--fa fa-chalkboard-teacher fa-w-20" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="chalkboard-teacher" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""><path fill="currentColor" d="M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"></path></svg><!-- <i class="fas fa-chalkboard-teacher"></i> --> 교사권한 신청</a>
<a class="dropdown-item" href="./status.php?user_id=kimgihong38"><svg class="svg-inline--fa fa-newspaper fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="newspaper" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"></path></svg><!-- <i class="fas fa-newspaper"></i> --> 내 제출 현황</a>
<a class="dropdown-item" href="./logout.php"><svg class="svg-inline--fa fa-sign-out-alt fa-w-16" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sign-out-alt" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"></path></svg><!-- <i class="fas fa-sign-out-alt"></i> --> 로그 아웃</a>
</div>
</li>
</ul> <!-- main nav -->
</div> <!-- container-fluid -->
</nav>
</header>
<main role="main">
<div class="container">
<div class="card">
<div class="card-header">강의ID 7082) 암호화 알고리즘&보안의 중요성에 대한 강의 (작성자:<a href="userinfo.php?user=kimgihong38">kimgihong38</a>) <a href="classop_make.php?stat=mod&class_id=7082"><span class="badge badge-primary">수정</span></a></div>
<div class="card-body">
<div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">정확한 암호를 입력한 여러분들,</span></div><div style=""><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">축하합니다. :)</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style=""><span style="font-family: &quot;Malgun Gothic&quot;; font-size: 9pt;">물론 이제는 개인 강의에서의 스크립트 소</span><span style="font-family: &quot;Malgun Gothic&quot;; font-size: 9pt;">스가 사이트 보안을 위해 막아져 있어</span></div><div style="font-family: &quot;Malgun Gothic&quot;;"><span style="font-size: 9pt;">체험을 직접 해보지는 못하겠지만요. (원래 제 강의글에 들어가게 되면 암호를 입력하도록 하고, 맞았을 경우에만 글에 들어갈수 있도록 했었습니다.)</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">이런저런 설명을 듣기 전에, 먼저 '해시' 가 뭔지 알아볼까요?</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><a href="https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98">https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98</a></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;"></span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">[ 해시 함수의 가장 기본적인 성질은 두 해시 값이 다르다면 원래의 데이터도 다르다는 것이다. 이 특징은 해시 함수가 결정적이기 때문이다. 반대로 해시 함수는 단사 함수가 아니다. 같은 해시 값을 갖더라도 원래의 입력값이 같다는 것을 시사하지만 보장해주지는 않는다. 원래 입력의 한 비트만 바뀌더라도 해시 함수의 성질로 인해 해시 값은 크게 달라진다. ] -위 링크, 위키피디아 문서 </span></div></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br><div><div id="highlighter_698937" class="syntaxhighlighter cpp"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div><div class="line number52 index51 alt1">52</div><div class="line number53 index52 alt2">53</div><div class="line number54 index53 alt1">54</div><div class="line number55 index54 alt2">55</div><div class="line number56 index55 alt1">56</div><div class="line number57 index56 alt2">57</div><div class="line number58 index57 alt1">58</div><div class="line number59 index58 alt2">59</div><div class="line number60 index59 alt1">60</div><div class="line number61 index60 alt2">61</div><div class="line number62 index61 alt1">62</div><div class="line number63 index62 alt2">63</div><div class="line number64 index63 alt1">64</div><div class="line number65 index64 alt2">65</div><div class="line number66 index65 alt1">66</div><div class="line number67 index66 alt2">67</div><div class="line number68 index67 alt1">68</div><div class="line number69 index68 alt2">69</div><div class="line number70 index69 alt1">70</div><div class="line number71 index70 alt2">71</div><div class="line number72 index71 alt1">72</div><div class="line number73 index72 alt2">73</div><div class="line number74 index73 alt1">74</div><div class="line number75 index74 alt2">75</div><div class="line number76 index75 alt1">76</div><div class="line number77 index76 alt2">77</div><div class="line number78 index77 alt1">78</div><div class="line number79 index78 alt2">79</div><div class="line number80 index79 alt1">80</div><div class="line number81 index80 alt2">81</div><div class="line number82 index81 alt1">82</div><div class="line number83 index82 alt2">83</div><div class="line number84 index83 alt1">84</div><div class="line number85 index84 alt2">85</div><div class="line number86 index85 alt1">86</div><div class="line number87 index86 alt2">87</div><div class="line number88 index87 alt1">88</div><div class="line number89 index88 alt2">89</div><div class="line number90 index89 alt1">90</div><div class="line number91 index90 alt2">91</div><div class="line number92 index91 alt1">92</div><div class="line number93 index92 alt2">93</div><div class="line number94 index93 alt1">94</div><div class="line number95 index94 alt2">95</div><div class="line number96 index95 alt1">96</div><div class="line number97 index96 alt2">97</div><div class="line number98 index97 alt1">98</div><div class="line number99 index98 alt2">99</div><div class="line number100 index99 alt1">100</div><div class="line number101 index100 alt2">101</div><div class="line number102 index101 alt1">102</div><div class="line number103 index102 alt2">103</div><div class="line number104 index103 alt1">104</div><div class="line number105 index104 alt2">105</div><div class="line number106 index105 alt1">106</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="cpp plain">function SHA256(s){</code></div><div class="line number2 index1 alt1"><code class="cpp spaces"> </code> </div><div class="line number3 index2 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var chrsz = 8;</code></div><div class="line number4 index3 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var hexcase = 0;</code></div><div class="line number5 index4 alt2"><code class="cpp spaces"> </code> </div><div class="line number6 index5 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function safe_add (x, y) {</code></div><div class="line number7 index6 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var lsw = (x &amp; 0xFFFF) (y &amp; 0xFFFF);</code></div><div class="line number8 index7 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var msw = (x &gt;&gt; 16) (y &gt;&gt; 16) (lsw &gt;&gt; 16);</code></div><div class="line number9 index8 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">(msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);</code></div><div class="line number10 index9 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number11 index10 alt2"><code class="cpp spaces"> </code> </div><div class="line number12 index11 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function S (X, n) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">( X &gt;&gt;&gt; n ) | (X &lt;&lt; (32 - n)); }</code></div><div class="line number13 index12 alt2"><code class="cpp spaces"> </code><code class="cpp plain">function R (X, n) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">( X &gt;&gt;&gt; n ); }</code></div><div class="line number14 index13 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function Ch(x, y, z) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">((x &amp; y) ^ ((~x) &amp; z)); }</code></div><div class="line number15 index14 alt2"><code class="cpp spaces"> </code><code class="cpp plain">function Maj(x, y, z) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">((x &amp; y) ^ (x &amp; z) ^ (y &amp; z)); }</code></div><div class="line number16 index15 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function Sigma0256(x) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">(S(x, 2) ^ S(x, 13) ^ S(x, 22)); }</code></div><div class="line number17 index16 alt2"><code class="cpp spaces"> </code><code class="cpp plain">function Sigma1256(x) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">(S(x, 6) ^ S(x, 11) ^ S(x, 25)); }</code></div><div class="line number18 index17 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function Gamma0256(x) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">(S(x, 7) ^ S(x, 18) ^ R(x, 3)); }</code></div><div class="line number19 index18 alt2"><code class="cpp spaces"> </code><code class="cpp plain">function Gamma1256(x) { </code><code class="cpp keyword bold">return</code> <code class="cpp plain">(S(x, 17) ^ S(x, 19) ^ R(x, 10)); }</code></div><div class="line number20 index19 alt1"><code class="cpp spaces"> </code> </div><div class="line number21 index20 alt2"><code class="cpp spaces"> </code><code class="cpp plain">function core_sha256 (m, l) {</code></div><div class="line number22 index21 alt1"><code class="cpp spaces"> </code> </div><div class="line number23 index22 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var K = </code><code class="cpp keyword bold">new</code> <code class="cpp plain">Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1,</code></div><div class="line number24 index23 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,</code></div><div class="line number25 index24 alt2"><code class="cpp spaces"> </code><code class="cpp plain">0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786,</code></div><div class="line number26 index25 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,</code></div><div class="line number27 index26 alt2"><code class="cpp spaces"> </code><code class="cpp plain">0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,</code></div><div class="line number28 index27 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,</code></div><div class="line number29 index28 alt2"><code class="cpp spaces"> </code><code class="cpp plain">0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B,</code></div><div class="line number30 index29 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,</code></div><div class="line number31 index30 alt2"><code class="cpp spaces"> </code><code class="cpp plain">0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A,</code></div><div class="line number32 index31 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,</code></div><div class="line number33 index32 alt2"><code class="cpp spaces"> </code><code class="cpp plain">0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);</code></div><div class="line number34 index33 alt1"><code class="cpp spaces"> </code> </div><div class="line number35 index34 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var HASH = </code><code class="cpp keyword bold">new</code> <code class="cpp plain">Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, </code></div><div class="line number36 index35 alt1"><code class="cpp spaces"> </code><code class="cpp plain">0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);</code></div><div class="line number37 index36 alt2"><code class="cpp spaces"> </code> </div><div class="line number38 index37 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var W = </code><code class="cpp keyword bold">new</code> <code class="cpp plain">Array(64);</code></div><div class="line number39 index38 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var a, b, c, d, e, f, g, h, i, j;</code></div><div class="line number40 index39 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var T1, T2;</code></div><div class="line number41 index40 alt2"><code class="cpp spaces"> </code> </div><div class="line number42 index41 alt1"><code class="cpp spaces"> </code><code class="cpp plain">m[l &gt;&gt; 5] |= 0x80 &lt;&lt; (24 - l % 32);</code></div><div class="line number43 index42 alt2"><code class="cpp spaces"> </code><code class="cpp plain">m[((l 64 &gt;&gt; 9) &lt;&lt; 4) 15] = l;</code></div><div class="line number44 index43 alt1"><code class="cpp spaces"> </code> </div><div class="line number45 index44 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code> <code class="cpp plain">( var i = 0; i<m.length; i =</code><code class="cpp string">"16"</code> <code class="cpp plain">)=</code><code class="cpp string">""</code> <code class="cpp plain">{=</code><code class="cpp string">""</code> <code class="cpp plain">a=</code><code class="cpp string">"HASH[0];"</code> <code class="cpp plain">b=</code><code class="cpp string">"HASH[1];"</code> <code class="cpp plain">c=</code><code class="cpp string">"HASH[2];"</code> <code class="cpp plain">d=</code><code class="cpp string">"HASH[3];"</code> <code class="cpp plain">e=</code><code class="cpp string">"HASH[4];"</code> <code class="cpp plain">f=</code><code class="cpp string">"HASH[5];"</code> <code class="cpp plain">g=</code><code class="cpp string">"HASH[6];"</code> <code class="cpp plain">h=</code><code class="cpp string">"HASH[7];"</code> <code class="cpp keyword bold">for</code><code class="cpp plain">=</code><code class="cpp string">""</code> <code class="cpp plain">(=</code><code class="cpp string">""</code> <code class="cpp plain">var=</code><code class="cpp string">""</code> <code class="cpp plain">j=</code><code class="cpp string">"0;"</code> <code class="cpp plain">j<64;=</code><code class="cpp string">""</code> <code class="cpp plain">j )=</code><code class="cpp string">""</code> <code class="cpp keyword bold">if</code><code class="cpp plain">=</code><code class="cpp string">""</code> <code class="cpp plain">(j=</code><code class="cpp string">""</code> <code class="cpp plain"><=</code><code class="cpp string">""</code> <code class="cpp plain">16)=</code><code class="cpp string">""</code> <code class="cpp plain">w[j]=</code><code class="cpp string">"m[j"</code> <code class="cpp plain">=</code><code class="cpp string">""</code> <code class="cpp plain">i];=</code><code class="cpp string">""</code> <code class="cpp keyword bold">else</code><code class="cpp plain">=</code><code class="cpp string">""</code> <code class="cpp plain">-=</code><code class="cpp string">""</code> <code class="cpp plain">2]),=</code><code class="cpp string">""</code> <code class="cpp plain">w[j=</code><code class="cpp string">""</code> <code class="cpp plain">7]),=</code><code class="cpp string">""</code> <code class="cpp plain">gamma0256(w[j=</code><code class="cpp string">""</code> <code class="cpp plain">15])),=</code><code class="cpp string">""</code> <code class="cpp plain">16]);=</code><code class="cpp string">""</code> <code class="cpp plain">t1=</code><code class="cpp string">"safe_add(safe_add(safe_add(safe_add(h,"</code> <code class="cpp plain">sigma1256(e)),=</code><code class="cpp string">""</code> <code class="cpp plain">ch(e,=</code><code class="cpp string">""</code> <code class="cpp plain">f,=</code><code class="cpp string">""</code> <code class="cpp plain">g)),=</code><code class="cpp string">""</code> <code class="cpp plain">k[j]),=</code><code class="cpp string">""</code> <code class="cpp plain">w[j]);=</code><code class="cpp string">""</code> <code class="cpp plain">t2=</code><code class="cpp string">"safe_add(Sigma0256(a),"</code> <code class="cpp plain">maj(a,=</code><code class="cpp string">""</code> <code class="cpp plain">b,=</code><code class="cpp string">""</code> <code class="cpp plain">c));=</code><code class="cpp string">""</code> <code class="cpp plain">t1);=</code><code class="cpp string">""</code> <code class="cpp plain">t2);=</code><code class="cpp string">""</code> <code class="cpp plain">}=</code><code class="cpp string">""</code> <code class="cpp plain">hash[0]=</code><code class="cpp string">"safe_add(a,"</code> <code class="cpp plain">hash[0]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[1]=</code><code class="cpp string">"safe_add(b,"</code> <code class="cpp plain">hash[1]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[2]=</code><code class="cpp string">"safe_add(c,"</code> <code class="cpp plain">hash[2]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[3]=</code><code class="cpp string">"safe_add(d,"</code> <code class="cpp plain">hash[3]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[4]=</code><code class="cpp string">"safe_add(e,"</code> <code class="cpp plain">hash[4]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[5]=</code><code class="cpp string">"safe_add(f,"</code> <code class="cpp plain">hash[5]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[6]=</code><code class="cpp string">"safe_add(g,"</code> <code class="cpp plain">hash[6]);=</code><code class="cpp string">""</code> <code class="cpp plain">hash[7]=</code><code class="cpp string">"safe_add(h,"</code> <code class="cpp plain">hash[7]);=</code><code class="cpp string">""</code> <code class="cpp keyword bold">return</code><code class="cpp plain">=</code><code class="cpp string">""</code> <code class="cpp plain">hash;=</code><code class="cpp string">""</code> <code class="cpp plain">function=</code><code class="cpp string">""</code> <code class="cpp plain">str2binb=</code><code class="cpp string">""</code> <code class="cpp plain">(str)=</code><code class="cpp string">""</code> <code class="cpp plain">bin=</code><code class="cpp string">"Array();"</code> <code class="cpp plain">mask=</code><code class="cpp string">"(1"</code> <code class="cpp plain"><<=</code><code class="cpp string">""</code> <code class="cpp plain">chrsz)=</code><code class="cpp string">""</code> <code class="cpp plain">1;=</code><code class="cpp string">""</code> <code class="cpp keyword bold">for</code><code class="cpp plain">(var=</code><code class="cpp string">""</code> <code class="cpp plain">i=</code><code class="cpp string">"0;"</code> <code class="cpp plain">str.length=</code><code class="cpp string">""</code> <code class="cpp plain">*=</code><code class="cpp string">""</code> <code class="cpp plain">chrsz;=</code><code class="cpp string">""</code> <code class="cpp plain">bin[i=</code><code class="cpp string">""</code><code class="cpp plain">>&gt;5] |= (str.charCodeAt(i / chrsz) &amp; mask) &lt;&lt; (24 - i2);</code></div><div class="line number46 index45 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number47 index46 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">bin;</code></div><div class="line number48 index47 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number49 index48 alt2"><code class="cpp spaces"> </code> </div><div class="line number50 index49 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function Utf8Encode(string) {</code></div><div class="line number51 index50 alt2"><code class="cpp spaces"> </code><code class="cpp plain">string = string.replace(/\r\n/g,</code><code class="cpp string">"\n"</code><code class="cpp plain">);</code></div><div class="line number52 index51 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var utftext = </code><code class="cpp string">""</code><code class="cpp plain">;</code></div><div class="line number53 index52 alt2"><code class="cpp spaces"> </code> </div><div class="line number54 index53 alt1"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code> <code class="cpp plain">(var n = 0; n &lt; string.length; n ) {</code></div><div class="line number55 index54 alt2"><code class="cpp spaces"> </code> </div><div class="line number56 index55 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var c = string.charCodeAt(n);</code></div><div class="line number57 index56 alt2"><code class="cpp spaces"> </code> </div><div class="line number58 index57 alt1"><code class="cpp spaces"> </code><code class="cpp keyword bold">if</code> <code class="cpp plain">(c &lt; 128) {</code></div><div class="line number59 index58 alt2"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode(c);</code></div><div class="line number60 index59 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number61 index60 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">else</code> <code class="cpp keyword bold">if</code><code class="cpp plain">((c &gt; 127) &amp;&amp; (c &lt; 2048)) {</code></div><div class="line number62 index61 alt1"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode((c &gt;&gt; 6) | 192);</code></div><div class="line number63 index62 alt2"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode((c &amp; 63) | 128);</code></div><div class="line number64 index63 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number65 index64 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div><div class="line number66 index65 alt1"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode((c &gt;&gt; 12) | 224);</code></div><div class="line number67 index66 alt2"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode(((c &gt;&gt; 6) &amp; 63) | 128);</code></div><div class="line number68 index67 alt1"><code class="cpp spaces"> </code><code class="cpp plain">utftext = String.fromCharCode((c &amp; 63) | 128);</code></div><div class="line number69 index68 alt2"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number70 index69 alt1"><code class="cpp spaces"> </code> </div><div class="line number71 index70 alt2"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number72 index71 alt1"><code class="cpp spaces"> </code> </div><div class="line number73 index72 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">utftext;</code></div><div class="line number74 index73 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number75 index74 alt2"><code class="cpp spaces"> </code> </div><div class="line number76 index75 alt1"><code class="cpp spaces"> </code><code class="cpp plain">function binb2hex (binarray) {</code></div><div class="line number77 index76 alt2"><code class="cpp spaces"> </code><code class="cpp plain">var hex_tab = hexcase ? </code><code class="cpp string">"0123456789ABCDEF"</code> <code class="cpp plain">: </code><code class="cpp string">"0123456789abcdef"</code><code class="cpp plain">;</code></div><div class="line number78 index77 alt1"><code class="cpp spaces"> </code><code class="cpp plain">var str = </code><code class="cpp string">""</code><code class="cpp plain">;</code></div><div class="line number79 index78 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code><code class="cpp plain">(var i = 0; i &lt; binarray.length * 4; i ) {</code></div><div class="line number80 index79 alt1"><code class="cpp spaces"> </code><code class="cpp plain">str = hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((3 - i%4)*8 4)) &amp; 0xF) </code></div><div class="line number81 index80 alt2"><code class="cpp spaces"> </code><code class="cpp plain">hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((3 - i%4)*8 )) &amp; 0xF);</code></div><div class="line number82 index81 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number83 index82 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">str;</code></div><div class="line number84 index83 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number85 index84 alt2"><code class="cpp spaces"> </code> </div><div class="line number86 index85 alt1"><code class="cpp spaces"> </code><code class="cpp plain">s = Utf8Encode(s);</code></div><div class="line number87 index86 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">binb2hex(core_sha256(str2binb(s), s.length * chrsz));</code></div><div class="line number88 index87 alt1"><code class="cpp spaces"> </code> </div><div class="line number89 index88 alt2"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number90 index89 alt1"> </div><div class="line number91 index90 alt2"><code class="cpp plain">document.body.style.display=</code><code class="cpp string">"block"</code><code class="cpp plain">;</code></div><div class="line number92 index91 alt1"> </div><div class="line number93 index92 alt2"><code class="cpp plain">var youranswer = prompt(</code><code class="cpp string">'이 글을 열람하려면 암호를 입력해야 합니다.\n암호를 입력하시오.'</code><code class="cpp plain">);</code></div><div class="line number94 index93 alt1"> </div><div class="line number95 index94 alt2"><code class="cpp keyword bold">if</code><code class="cpp plain">(youranswer==null) {</code></div><div class="line number96 index95 alt1"><code class="cpp plain">alert(</code><code class="cpp string">'암호를 입력하지 않으면 글을 열람할 수 없습니다.'</code><code class="cpp plain">);</code></div><div class="line number97 index96 alt2"><code class="cpp plain">location.href=</code><code class="cpp string">"<a href="http://codeup.kr">http://codeup.kr</a>"</code></div><div class="line number98 index97 alt1"><code class="cpp plain">}</code></div><div class="line number99 index98 alt2"><code class="cpp keyword bold">else</code> <code class="cpp keyword bold">if</code><code class="cpp plain">(SHA256(youranswer)== </code><code class="cpp string">'9ce9852ea8872b7fd9f5d18c6776c9f588be3d44bb2050bfed9d46d00f93b9c4'</code><code class="cpp plain">) alert(</code><code class="cpp string">'축하합니다.\n정확한 암호입니다 :)\n\n노가다라도 하셨나요?'</code><code class="cpp plain">);</code></div><div class="line number100 index99 alt1"><code class="cpp keyword bold">else</code> <code class="cpp keyword bold">if</code><code class="cpp plain">(SHA256(youranswer)== </code><code class="cpp string">'397a70ba1a2fb7c9f94a74c825d4183eee1e2f65f7f8e336ce56c68ce702752b'</code><code class="cpp plain">) alert(</code><code class="cpp string">'축하합니다.\n정확한 암호입니다 :)'</code><code class="cpp plain">);</code></div><div class="line number101 index100 alt2"><code class="cpp keyword bold">else</code> <code class="cpp keyword bold">if</code><code class="cpp plain">(SHA256(youranswer)==</code><code class="cpp string">'b6ae0c4cba988ed0905f639d587a4981e52e67d921fbf5423eea5b2381c13ffb'</code><code class="cpp plain">) alert(</code><code class="cpp string">'작성자의 개인 암호입니다.\n알아내셨네요 ;ㅅ;'</code><code class="cpp plain">);</code></div><div class="line number102 index101 alt1"><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div><div class="line number103 index102 alt2"><code class="cpp plain">alert(</code><code class="cpp string">'틀린 암호입니다. 다시 시도하세요.'</code><code class="cpp plain">);</code></div><div class="line number104 index103 alt1"><code class="cpp plain">alert(</code><code class="cpp string">'확인을 누르면 힌트 글로 리다이렉트 됩니다.'</code><code class="cpp plain">);</code></div><div class="line number105 index104 alt2"><code class="cpp plain">location.href=</code><code class="cpp string">"<a href="http://codeup.kr/d_thread.php?tid=5495">http://codeup.kr/d_thread.php?tid=5495</a>"</code></div><div class="line number106 index105 alt1"><code class="cpp plain">}</code></div></div></td></tr></tbody></table></div></div><p> </p><p> </p><p> </p></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><div><span style="font-size: 9pt;">이 소스가 실제로 사용된 javascript 소스입니다. (물론 지금은 체험할 수 없습니다! 미안해요 ㅠㅠ)</span></div><div><br></div><div><span style="font-size: 9pt;">우선 소스가 난독화가 되어 있죠?</span></div><div><span style="font-size: 9pt;">난독화를 통해, 소스를 알고 있어도 파악하기 어렵게 만들수 있습니다! ㅋㅋㅋ.</span></div><div><br></div><div><span style="font-size: 9pt;">저 소스는</span></div><div><br></div><div><span style="font-size: 9pt;">SHA256 암호화 알고리즘을 사용하였고</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">[ SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다.</span></div><div><br></div><div><span style="font-size: 9pt;">SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.</span></div><div><br></div><div><span style="font-size: 9pt;">SHA-0과 SHA-1에 대한 공격은 이미 발견되었다. SHA-2에 대한 공격은 아직 발견되지 않았으나, 전문가들은 SHA-2 함수들이 SHA-1과 비슷한 방법을 사용하기 때문에 공격이 발견될 가능성이 있다고 지적한다. 미국 표준 기술 연구소(NIST)는 SHA-3로 불리는 새로운 암호화 해시 알고리즘에 대한 후보를 공모하였다. ] - 위키피디아 문서</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">난독화가 되어 있는 (링크 : </span><span style="background-color: rgb(255, 255, 255); color: rgb(33, 37, 41); font-family: "Noto Sans KR", sans-serif; font-size: 9pt;"><a href="https://docs.google.com/document/d/1oiVraZMsYNJOmix2jWsQfztjHHzwF0FYA1p5rucJquw/edit?usp=sharing">https://docs.google.com/document/d/1oiVraZMsYNJOmix2jWsQfztjHHzwF0FYA1p5rucJquw/edit?usp=sharing</a></span><span style="font-size: 9pt;"> )</span></div><div><br></div><div><span style="font-size: 9pt;">소스 자체를 decode 하는데에 성공해서, 원본 소스를 봤어도</span></div><div><br></div><div><span style="font-size: 9pt;">그 소스 내에서는 암호 문자열 자체가 있는 것이 아닌,</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">암호 문자열의 해시값이 들어 있습니다.</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">저 소스는 이 글을 들어온 사람이 입력한 암호를 해시 값으로 바꿔서,</span></div><div><br></div><div><span style="font-size: 9pt;">그 해시 값과 미리 지정해 놓은 값이 같은지만 비교하는 javascript 소스입니다.</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">아직까지는,</span></div><div><br></div><div><span style="font-size: 9pt;">제가 사용한 알고리즘의 해시 값을 알면 암호화 하기 전의 문자열을 손쉽게 얻어 낼수 있는 방법은 없습니다.</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">예를 들어 MD5 알고리즘을 볼까요?</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">이 해시 알고리즘은 취약점이 이미 까발려져,</span></div><div><br></div><div><span style="font-size: 9pt;">해시 값을 아는 것만으로도 암호화 전의 문자열을 알아낼 수 있답니다.</span></div><div><br></div><div><span style="font-size: 9pt;">(정확히 말하면, 암호화 전의 문자열을 알아낼 가능성이 '높은' 겁니다.</span></div><div><br></div><div><span style="font-size: 9pt;">알아내기에 실패하는 경우도 많지만, 그럴 가능성이 있다는 것 조차 위험성이 생기는 거죠.)</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">4ec71bdab13248dec794bc78a648e362</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">이건 제가 MD5 해시 알고리즘으로 어떤 문자열을 암호화한 해시 값입니다.</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><a href="https://www.md5online.org/md5-decrypt.html" target="_self"><span style="font-size: 9pt;">https://www.md5online.org/md5-decrypt.html</span></a></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">이 사이트에 복사해 붙혀넣은 다음, decrypt를 한번 해 보시기 바랍니다!</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">하지만 위의 소스에 나와있는 세 개의 해시 값을 볼까요?</span></div><div><br></div><div><span style="font-size: 9pt;"></span></div><div><br></div><div><span style="font-size: 9pt;">1) 9ce9852ea8872b7fd9f5d18c6776c9f588be3d44bb2050bfed9d46d00f93b9c4</span></div><div><span style="font-size: 9pt;">2) 397a70ba1a2fb7c9f94a74c825d4183eee1e2f65f7f8e336ce56c68ce702752b</span></div><div><span style="font-size: 9pt;">3) b6ae0c4cba988ed0905f639d587a4981e52e67d921fbf5423eea5b2381c13ffb</span></div><div><br></div><div><span style="font-size: 9pt;">이 해시 값만으로 원본 문자열을 찾을 수 있을까요?</span></div><div><span style="font-size: 9pt;">지금으로는 구글링을 몇십 번 해 봐도 불가능할 겁니다 ㅅ</span></div><div><br></div><div><span style="font-size: 9pt;">(특히 3번 - 개인 암호는 저만 알고 있는데, 알아내시면 선물을 드립니다. ㅋㅋㅋㅋㅋ)</span></div><div><br></div><div><span style="font-size: 9pt;">이래서, 암호 알고리즘이 중요하다는 겁니다.</span></div></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">어떤 알고리즘을 사용하는지에 따라, 다른 사람에게 공개되면 안 되는 중요한 정보들을</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">보호할수 있거나 보호하기에 실패할수 있기 때문이지요 ㅎㅎ.</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">그리고 하나 더 첨언을 하자면,</span><br></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;">이런 식으로 모든 사이트 이용자에게 스크립트 소스를 사용 가능하도록 만들면 보안에 문제가 생길 수 있습니다.</span></div><div style="font-family: &quot;Malgun Gothic&quot;; font-size: medium;"><span style="font-size: 9pt;"><br></span></div><div style="font-family: &quot;Malgun Gothic&quot;;">가장 간단한 예시를 들어볼까요, 바로 XSS 스크립팅입니다.</div><div style="font-family: &quot;Malgun Gothic&quot;;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;;">[<b style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">사이트 간 스크립팅</b><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">(또는</span><b style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">크로스 사이트 스크립팅</b><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">, 영문 명칭 cross-site scripting, 영문 약어 XSS)은</span><a href="https://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98" title="웹 애플리케이션" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">웹 애플리케이션</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">에서 많이 나타나는 취약점의 하나로</span><a href="https://ko.wikipedia.org/wiki/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8" title="웹사이트" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">웹사이트</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">관리자가 아닌 이가</span><a href="https://ko.wikipedia.org/wiki/%EC%9B%B9_%ED%8E%98%EC%9D%B4%EC%A7%80" title="웹 페이지" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">웹 페이지</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">에 악성</span><a href="https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8_%EC%82%AC%EC%9D%B4%EB%93%9C_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8" class="mw-redirect" title="클라이언트 사이드 스크립트" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">스크립트</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">를 삽입할 수 있는 취약점이다. 주로 여러 사용자가 보게 되는</span><a href="https://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90_%EA%B2%8C%EC%8B%9C%ED%8C%90" title="전자 게시판" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">전자 게시판</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 이 취약점으로 해커가 사용자의 정보(</span><a href="https://ko.wikipedia.org/wiki/HTTP_%EC%BF%A0%ED%82%A4" title="HTTP 쿠키" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">쿠키</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">,</span><a href="https://ko.wikipedia.org/wiki/%EC%84%B8%EC%85%98" class="mw-disambig" title="세션" style="text-decoration-line: none; color: rgb(11, 0, 128); background: none rgb(255, 255, 255); font-family: sans-serif; font-size: 14px;">세션</a><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다.</span>] -위키피디아 문서</div><div style="font-family: &quot;Malgun Gothic&quot;;"><br></div><div style="font-family: &quot;Malgun Gothic&quot;;"><a href="https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85" target="_self"></a></div><div style="font-family: &quot;Malgun Gothic&quot;;"><a href="https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85" target="_self">https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85</a> </div><div style="font-family: &quot;Malgun Gothic&quot;;"><br></div><p>비록 제 이전 글이 무력화된게 슬프지만, 제 이전 강의글을 보고 배워갈 것들도 많을 수 있을 겁니다.</p><p> </p><p>전 스크립트를 이용해 단지 글 암호화를 했지만, 할 수 있는게 그것 밖에 없을까요?</p><p>또한, 악의를 가진 사람이 스크립트 소스가 사용 가능한 것을 악용한다면, 어떤 일이 일어날 수 있을까요?</p><p> </p><p>제 두 개의 강의글로 보안의 중요성에 대해 배워 가셨으면 좋겠습니다.</p><p>그래서.. 이전 강의글을 삭제하지 않을 생각입니다.</p><p> </p><p><a href="http://codeup.kr/classop.php?class_id=7080">http://codeup.kr/classop.php?class_id=7080</a> </p><p> </p><p align="" style="">한번씩 보시기 바랍니다. ㅎㅎ.</p><p align="" style=""> </p><p align="" style="">감사합니다 <strike>ㅅ</strike> ><</p> </div>
</div>
<table id="problemset" width="80%" class="table table-striped table-condensed table-sm">
<thead>
<tr class="text-center table-primary">
<td width="5">
</td><td style="cursor:hand" onclick="sortTable('problemset', 1, 'int');" width="100">문제 ID </td><td width="60%">문제명</td>
<td style="cursor:hand" onclick="sortTable('problemset', 3, 'int');" width="100">정확한풀이</td>
<td style="cursor:hand" onclick="sortTable('problemset', 4, 'int');" width="100">제출</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
<h4><strong>댓글 목록</strong></h4><table class="table table-condensed table-striped table-sm">
<tbody><tr>
</tr>
<tr>
<td width="50px"><a class="badge badge-secondary" href="userinfo.php?user=coconutmilk">coconutmilk</a></td>
<td>??? <small class="gray">(2019-05-19 15:52:00)</small> </td>
</tr>
<tr>
<td width="50px"><a class="badge badge-secondary" href="userinfo.php?user=KORabcd">KORabcd</a></td>
<td>ㅋㅋ <small class="gray">(2019-05-19 16:00:51)</small> </td>
</tr>
<tr>
<td width="50px"><a class="badge badge-secondary" href="userinfo.php?user=kimgihong38">kimgihong38</a></td>
<td>제대로 수정이 끝났습니다. <br>
제 강의글에 관심을 가져 주신 모든 분들에게 감사드립니다. <small class="gray">(2019-05-19 19:16:21 <a href="classop_reply.php?stat=del&rid=12404&class_id=7082" class="badge badge-danger">삭제</a>)</small> </td>
</tr>
<tr>
<td width="50px"><a class="badge badge-secondary" href="userinfo.php?user=Next_Coding">Next_Coding</a></td>
<td>오우... 이해가 잘되네요 ㅋ<br>
근데 글자수를 조금 더 키워주면 좋을 것 같아요... <small class="gray">(2019-06-04 21:25:39)</small> </td>
</tr>
</tbody></table>
<form action="classop_reply.php" method="post" name="frm" id="frm">
<textarea class="form-control" id="reply" name="reply" placeholder="댓글 입력"></textarea>
<input class="btn btn-primary" type="button" onclick="fs();" value="댓글 입력">
<input type="hidden" name="class_id" value="7082">
<input type="hidden" name="user_id" value="kimgihong38">
<input type="hidden" name="stat" value="new">
</form>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.0/js/all.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-21189547-2', 'auto');
ga('send', 'pageview');
</script>
<hr>
<footer class="container">
<h6 class="text-center">
Copyright(C) 2012- <a href="mailto:[email protected]">CodeUp</a><br>
(E-mail : [email protected])
</h6>
</footer>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<!-- 새 댓글 -->
<script>
function freset() {
if ( confirm("명단을 리셋하면 기존의 푼 사람 명단이 모두 삭제되며, 복구할 수 없습니다. 정말 초기화 하시겠습니까?") == true )
{
document.frm0.submit();
}
else
{
return ;
}
}
function fend() {
if ( confirm("수업을 마감하면 더 이상 푼 사람 명단에 등록되지 않습니다. 마감을 취소할 수 없으므로 신중하게 결정하세요.진행하시겠습니까?") == true )
{
document.frm1.submit();
}
else
{
return ;
}
}
function fs() {
if ( document.frm.reply.value == '' )
{
alert("내용을 입력하세요.");
return ;
}
else if ( document.frm.reply.value.length > 1000 )
{
alert("댓글은 1000글자 이상입력되지 않습니다.");
return ;
}
else
{
document.frm.submit();
}
}
</script>
<link href="highlight/styles/shCore.css" rel="stylesheet" type="text/css">
<link href="highlight/styles/shThemeDefault.css" rel="stylesheet" type="text/css">
<script src="highlight/scripts/shCore.js" type="text/javascript"></script>
<script src="highlight/scripts/shBrushCpp.js" type="text/javascript"></script>
<script src="highlight/scripts/shBrushCss.js" type="text/javascript"></script>
<script src="highlight/scripts/shBrushJava.js" type="text/javascript"></script>
<script src="highlight/scripts/shBrushPython.js" type="text/javascript"></script>
<script language="javascript">
SyntaxHighlighter.config.bloggerMode = false;
SyntaxHighlighter.config.clipboardSwf = 'highlight/scripts/clipboard.swf';
SyntaxHighlighter.all();
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ext-language_tools.js"></script>
<link href="ckeditor/plugins/codesnippet/lib/highlight/styles/default.css" rel="stylesheet">
<script src="ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script>
ace.require("ace/ext/language_tools");
var editor;
var theme = 'xcode';
$('.source').each(function(index){
editor = ace.edit(this);
editor.setTheme('ace/theme/'+theme);
editor.getSession().setMode("ace/mode/c_cpp");
editor.setOptions({
maxLines: 100,
minLines: 1,
autoScrollEditorIntoView: true,
});
editor.setReadOnly(true); // false to make it editable
editor.setHighlightActiveLine(false);
});
</script>
<script type="text/javascript" src="include/jquery.tablesorter.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#stu").tablesorter()
});
</script>
<script type="text/javascript">
$(function () {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
</body>