[»ùÇà Ãß°¡]32ÀÚ¸® 16Áø¼ö¸¦ ºñ±³ÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ºü¸¦±î¿ä?
Hash_Test.zip (6.3M), Down : 5, 2021-07
Hash_Test.z01 (9.9M), Down : 5, 2021-07
Hash_Test.z02 (9.9M), Down : 5, 2021-07
Hash_Test.z03 (9.9M), Down : 6, 2021-07
321088;리/196; 1060;루Ǻ12;1652; 161652;수(MD5값 1077;니다.)가 약 100만,148; 1221;도 1080;습니다.
1060; 값1012; 다른 MD5 100만,148; 1221;도와 비교Ȣ16;lj16; 1068;1012; 해야 합니다.
Ꮘ1;셀에서 VLookup1004;/196; Ȣ16;니 속도가 너무 lj12;/140;서요...(속도가 lj12;리다기 보다lj16; 뻗Ǻ12; 버리네요.. 12640;12640;)
1060;,152; DB에 넣Ǻ12;서 쿼리/196; 비교 Ȣ16;,144;나, 아니면 DB없1060; Application(VC, VB, 파1060;썬 መ1;..)1004;/196; 변수(0176;열)에 넣Ǻ12;서 비교Ȣ16;,144;나... Ǻ12;떻,172; Ȣ16;lj16;,172; 빠를까요?
----------------
염칠불구Ȣ16;고 샘플파1068;1012; 올/160;습니다.
hash_test_1.csv와 hash_test_2.htm1012; 비교Ȣ16;/140; 합니다. (htm파1068;1012; csv/196; 변환한 파1068;도 같1060; 첨ǥ12; 합니다. htm에서 1649;1217; 1089;업1060; 불편Ȣ16;면 csv/196; 해도 상관 없습니다.)
1060; .160; 파1068;1032; row 개수가 다릅니다. 그래서 .160;번 비교를 해야할Ǐ19; 합니다.
ÀÌ¹Ì µ¥ÀÌÅÍ°¡ ½ºÇÁ·¹µå½ÃÆ® ÇüÅ·ΠµÇ¾î ÀÖÀ¸¸é, CSV·Î ÀͽºÆ÷Æ® ÇÏ¸é °£´ÜÇÏ°Ô ºÒ·¯¿Ã ¼ö ÀÖ½À´Ï´Ù.
±×·±µ¥ ÀÌ htmlÆÄÀϵµ ´Ü¼øÇÑ Å×À̺í ÇüÅÂ¶ó¼ ¿¢¼¿¿¡¼ ºÎ¸£¸é ¹Ù·Î ½ºÇÁ·¹µå½¬Æ® ÇüÅ·ΠºÒ·¯¿ÍÁö°í, À̸¦ PowershellÀ» ÅëÇؼ csvµîÀ¸·Î ÀúÀåÇÏ´Â °ÍÀº Å×½ºÆ® ÇØ ºÃ½À´Ï´Ù.
Á¤·Ä ¾Ë°í¸®ÁòÀ» ¹è¿îÁö°¡ ¿À·¡µÅ¼ Àß ±â¾ïÀÌ ¾È³ª´Âµ¥,, Á¤·ÄÀ» ÇÏ°í³ª¸é ÀÌÁøŽ»öÀÌ ºü¸£´Ù´Â ¸»¾¸À̽ŰÅÁÒ?
µ¿ÀÏÇÑ °ªÀÌ ¾çÃø¿¡ Á¸ÀçÇÏ´À³Ä Á¸ÀçÇÏÁö ¾Ê´À³Ä µîµîÀÇ Á¶°Ç¿¡ ¸ÂÃß¾î Äڵ带 Â¥¸é µÉ °Í °°½À´Ï´Ù.
´ëºÎºÐÀÇ °æ¿ì µÎ°³ÀÇ µ¥ÀÌÅͼÂÀÌ °°À»ÅÙµ¥, °¡²û À߸øµÈ °ªÀÌ µé¾î°¡´Â °æ¿ì°¡ ÀÖ¾î¼ ÀÌ°É °É·¯³»±â À§ÇÑ ÀÛ¾÷ÀÔ´Ï´Ù.
30ÃÊ¸é ³ª¿Ã°Í °°Àºµ¥¿ä
±× Á¤µµ °Ç¼ö¸é Çؽà °ª¿¡ À妽º¸¸ ´Þ¾ÆÁÖ¸é
0.1ÃÊ ¾È¿¡ ´ä ³ª¿É´Ï´Ù.
ÄÄ ¼º´É ÁÁÀ¸¸é 0.01ÃÊ.
óÀ½¿¡ 100¸¸°ÇÀÇ µ¥ÀÌÅ͸¦ À妽º ´Þ¾Æ¼ ÀÔ·ÂÇϴµ¥µµ ±×¸® ¿À·¡ °É¸®Áø ¾Ê°ÚÁÒ?
ÀÏ´Ü µ¥ÀÌÅ͸¦ DB¿¡ ³Ö´Â°Å ºÎÅÍ ÇØ º¸°Ú½À´Ï´Ù.
2. ¹«¾ùÀ» ºñ±³ÇؾßÇÏ´ÂÁö
3. °á°ú·Î ¹«¾ùÀ» ¾î¶² ÇüÅ·ΠÃâ·ÂÇؾßÇÏ´ÂÁö
ÀÌ°ÍÀÌ ¸íÈ®ÇؾßÇÒµíÇÕ´Ï´Ù.
DB¿¡ ³Ö¾î¼ SQL·Î µ¹·Áµµ µÇ°í, °£´ÜÇÑ ÇÁ·Î±×·¥À» Â¥¼ µ¹·Áµµ µÇÁÒ.
Àü C++ ÇÁ·Î±×·¡¸ÓÀε¥... C++·Î ÇصµµÇ±äÇϴµ¥ ÀÌ·±°Ç ÆÄÀ̽ãÀ¸·Î °£´ÜÈ÷ ½ºÅ©¸³Æ® ¸¸µå´Â°Ô Á¦ÀÏ ÁÁÁö ¾Ê³ª ½Í½À´Ï´Ù.
ã¾Æº¸´Ï ÆÄÀ̽㿡¼ 100¸¸¶óÀÎÀÇ ÆÄÀÏ Á¤µµ´Â ¿ ¼ö ÀִµíÇÕ´Ï´Ù.
2. ÀÌ µÎ°³ÀÇ ÆÄÀÏ ³»¿ëÀÌ °°¾Æ¾ß Çϴµ¥, °¡²û ³»¿ëÀÌ ´Ù¸¥°æ¿ì°¡ À־ä..
3. µÎ°³ÀÇ ÆÄÀÏÁß ¾î´ÀÂÊÀÌ ¸Â´ÂÁö ¸ð¸£±â ¶§¹®¿¡ ´Ù¸¥ ºÎºÐÀÇ ÇØ´ç ¹®ÀÚ¿°ú ±× ÇؽðªÀ» ¾Ë·ÁÁÖ¸é µË´Ï´Ù.
DB¸¦ »ç¿ëÇÏ°Ô µÇ¸é DB¿£ÁøÀ» Æ÷ÇÔÇØ¾ß Çؼ µ¢Ä¡°¡ Ä¿Áö´Â ¹®Á¦¶§¹®¿¡ ÀÏ´Ü ÇÁ·Î±×·¥À» Çϳª Â¥´Â°É ¿ì¼±À¸·Î »ý°¢ÇÏ°í ÀÖ½À´Ï´Ù.
100¸¸°³ÀÇ ÇؽðªÀÌ·¡ºÃÀÚ ¿ë·®À¸·Î´Â ¾ó¸¶ ¾ÈµÇ´Ï ÆÄÀÏÀ» º¯¼ö·Î Àоîµé¿©¼ ºñ±³ÇÏ¸é µÇÁö ¾ÊÀ»±î... Á¤µµ »ý°¢ÇÏ°í ÀÖ½À´Ï´Ù.
ÇÑ µÎ¹ø µ¹¸°´Ù¸é ÆÄÀ̽ãÀ¸·Î
°è¼Ó µ¹·Á¾ßÇϸé C³ª C++À»
ÇÑÂÊ ºñ±³´ë»óÀÌ ¸¹°í º¯µ¿ÀÌ º°·Î ¾ø´Ù¸é db¸¦ ¾µ °Í °°³×¿ä.
ÀÏ¿¡ ´ëÇؼ Á»´õ ÀÚ¼¼È÷ ¾È´Ù¸é ´Þ¶óÁú ¼ö ÀÖ°ÚÁö¸¸ ºñ±³¶ó´Â°Ô Á¤È®È÷ ¾î¶²°ÇÁö ¸ðÈ£Çؼ..
2. ÀÌ µÎ°³ÀÇ ÆÄÀÏ ³»¿ëÀÌ °°¾Æ¾ß Çϴµ¥, °¡²û ³»¿ëÀÌ ´Ù¸¥°æ¿ì°¡ À־ä..
3. µÎ°³ÀÇ ÆÄÀÏÁß ¾î´ÀÂÊÀÌ ¸Â´ÂÁö ¸ð¸£±â ¶§¹®¿¡ ´Ù¸¥ ºÎºÐÀÇ ÇØ´ç ¹®ÀÚ¿°ú ±× ÇؽðªÀ» ¾Ë·ÁÁÖ¸é µË´Ï´Ù.
DB¸¦ »ç¿ëÇÏ°Ô µÇ¸é DB¿£ÁøÀ» Æ÷ÇÔÇØ¾ß Çؼ µ¢Ä¡°¡ Ä¿Áö´Â ¹®Á¦¶§¹®¿¡ ÀÏ´Ü ÇÁ·Î±×·¥À» Çϳª Â¥´Â°É ¿ì¼±À¸·Î »ý°¢ÇÏ°í ÀÖ½À´Ï´Ù.
ÀÌ µÎ°³ÀÇ ÆÄÀÏÀÇ ³»¿ëÀº °ÅÀÇ(99.999%) ºñ½ÁÇÏÁö¸¸, Çѵΰ³ Á¤µµ ´Þ¶óÁö´Â °æ¿ì°¡ À־ä.
ÀÌ µÎ°³ÀÇ ÆÄÀÏÀº ºñ½ÁÇÑ ³»¿ëÀ» ´ã°í ÀÖÁö¸¸, ¾î´À ÇÑÂÊ(htmlÀ̳ª csv)ÀÇ °ªÀÌ °íÁ¤µÇ¾î ÀÖÁö´Â ¾Ê½À´Ï´Ù.
DB´Â Á¦¿Ü.
POC·Î pythonÀ» ÀÌ¿ëÇؼ HTML_loader(), CSV_loader()¸¦ ÅëÇؼ ¸®½ºÆ®¿¡ MD5¸¦ Âß ÀоîµéÀÌ°í...
Á¤·ÄµÈ µÎ list¸¦ Çϳª¾¿ ¿Å±â¸é¼ ºñ±³Çϸé one-pass·Î ³¡³¯ ¼ö ÀÖÀ» °Í °°³×¿ä.
óÀ½¿£ dict °°Àº °É ½á¾ß Çϳª »ý°¢Çߴµ¥... ±×·² ÇÊ¿ä´Â ¾øÀ» °Í °°°í¿ä. ¿À¸®·Á ´À·ÁÁú ¼ö ÀÖÀ» °Í °°³×¿ä.
±× Àß µ¹¾Æ°¡°í ¼Óµµ°¡ ÇÊ¿äÇÑ »óȲÀÌ µÇ¸é C++·Î vector¸¦ ¾²´Â ¹öÁ¯À¸·Î portingÇϸé Å« ³ë·Â¾øÀÌ Æ÷ÆÃÀÌ °¡´ÉÇÒ °Í °°³×¿ä.
ÆÄÀÏ Àд ºÎºÐÀº Æ÷¸Ë ¹®Á¦µµ ÀÖ°í Çؼ °Ç³Ê¶Ù°í... ·£´ýÇÑ 100¸¸°³ ¸®½ºÆ®¸¦ ¸¸µé°í, º¹»çÇÏ°í, ¿¡·¯¸¦ ¸¸µé°í, ºñ±³ÇÏ´Â Äڵ常 Â¥ ºÃ½À´Ï´Ù.
import random
def generate_random_list(size=1000000):
a_list = ["{0:032x}".format(random.randint(0, 0x100000000000000000000000000000000)) for x in range(size)]
return a_list
def compare_sorted_list(list1, list2):
index1 = 0
index2 = 0
while index1 < len(list1) or index2 < len(list2):
if list1[index1] == list2[index2]:
index1 += 1
index2 += 1
elif list1[index1] < list2[index2]:
print("found unmatched entry on ({0}, {1})".format(index1, index2))
index1 += 1
else:
print("found unmatched entry on ({0}, {1})".format(index1, index2))
index2 += 1
if __name__ == '__main__':
# generate sample data set
list1 = generate_random_list(1000000)
list2 = list1.copy()
# make noise
del list2[random.randint(0, len(list2))]
del list1[random.randint(0, len(list1))]
# sort
list1.sort()
list2.sort()
# compare
compare_sorted_list(list1, list2)
list1.sort()
list2.sort()
ÀÌ ºÎºÐ¿¡¼ CSVÀÇ Ã¹ ÇàÀÌ °°ÀÌ Á¤·ÄÀÌ µÇ¾î¹ö¸®³×¿ä... ¤Ð¤Ð
ÀÛ¼ºÇØ ÁֽŠÄڵ带 Åä´ë·Î Á¦°¡ Á» ´õ »ìÆ캸°Ú½À´Ï´Ù.
±×³ª¸¶ csv´Â Á» ³´°í, htmlÀº ÈξÀ ´À¸®³×¿ä.
# !/usr/bin/python3
def load_from_csv(file_name):
with open(file_name, 'r', encoding='latin-1') as csv_file:
rows = list()
for line in csv_file:
columns = line.strip().split(',')
rows.append(columns)
del rows[0]
return rows
def load_from_html(file_name):
with open(file_name, 'r', encoding='latin-1') as html_file:
rows = []
for line in html_file:
line = line.strip()
if line.startswith('<tr'):
columns = []
elif line.startswith('<td'):
close_chevron = line.find('>')
open_chevron = line.rfind('<')
columns.append(line[close_chevron + 1:open_chevron])
elif line.startswith('</tr'):
rows.append(columns)
del rows[0]
del rows[-1]
return rows
def left_entry_key(left_entry):
return (left_entry[0], left_entry[8])
def right_entry_key(right_entry):
return (right_entry[1], right_entry[7])
def compare_sorted_list(list1, list2, key_for_list1, key_for_list2):
index1 = 0
index2 = 0
while index1 < len(list1) or index2 < len(list2):
entry1 = list1[index1]
entry2 = list2[index2]
key1 = key_for_list1(entry1)
key2 = key_for_list2(entry2)
if key1 == key2:
index1 += 1
index2 += 1
elif key1 < key2:
print("mismatch found from list1: {0}".format(entry1))
index1 += 1
else:
print("mismatch found from list2: {0}".format(entry2))
index2 += 1
if __name__ == '__main__':
list1 = load_from_csv('hash_test_1.csv')
list2 = load_from_csv('hash_test_2.csv')
# sort
list1.sort(key=left_entry_key)
list2.sort(key=right_entry_key)
# compare
compare_sorted_list(list1, list2, left_entry_key, right_entry_key)
htmlÀÌ ´À¸®´Ù°í Çϼ̴µ¥, ÆÄ¿ö½©·Î htmlÀ» csv·Î º¯È¯ÇÏ´Â ½Ã°£º¸´Ù´Â ºü¸¥°Å °°½À´Ï´Ù.
ÀÌ°É·Î Ãâ·Â ºÎºÐ¸¸ Á¦ ÀÔ¸À¿¡ ¸Â°Ô ¼öÁ¤ÇÏ¸é µÉ°Å °°½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù. ^^
ÀÚ²Ù ¼Óµµ¸¸ ½Å°æ ¾²ÀÌ°í ±ò²ûÇÏ°Ô ¸¸µå´Â °Ç ½Å°æÀÌ ¾È ¾²À̳׿ä.
Á¦ ÀÏÀÌ ¾Æ´Ï¶ó¼ ±×·±°¡ º¾´Ï´Ù. ¤¾¤¾
´äº¯ ´Þ¾ÆÁֽŠ³»¿ëÀ» º¸¸é 100¸¸°³ÀÇ MD5 Çؽðª Á¤µµÀÇ ºñ±³´Â ±×¸® ¿À·¡ °É¸®Áö ¾Ê´Â´Ù°í ÇÏ´Ï ÀÏ´Ü ¹«½ÄÇÏ°Ô¶óµµ ÆÄÀ̽㰰Àº°É·Î Çѹø ÇØ º¸°Ú½À´Ï´Ù.
Ȥ½Ã ÆÄÀ̽㿡¼ ¼ÓµµµîÀÇ À̽´°¡ ÀÖÀ¸¸é ´Ù½Ã Áú¹®µå¸®°Ú½À´Ï´Ù. (¾Æ¸¶ Á¤·Ä ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÃßõµîÀ» ¹®Àǵ帮°Ô µÉ°Å °°½À´Ï´Ù.)
1. DB¿¡ ³ÖÀ»¶ó¸é ¾îÂ÷ÇÇ ÀÓÆ÷Å͸¦ ¸¸µé¾î¾ß ÇÒ°Ì´Ï´Ù. CSVÁ¤µµ¶ó¸é ±×³É µé¾î°¡°ÚÁö¸¸ HTMLÀº Æ÷¸Ë¿¡ µû¶ó Æļ°¡ ÀÖ¾î¾ß°ÚÁÒ. ±×·±µ¥ Æļ¸¸µé°í DB¿¡ ³Ö´Â ¼ö°í¸¦ ÇÒ ¹Ù¿¡¾ß ±×³É C++ ȤÀº C#À¸·Î Â¥´Â°Ô ´õ ³ªÀ»µíÇØ¿ä.
2. ÆÄÀ̽㵵 ³ª»ÚÁö¾Ê°ÚÁö¸¸ ÀÌ ³à¼®Àº ¹ÝÂë ÀÎÅÍÇÁ¸®ÅÍ¶ó¼ ·çÇÁ´Â ´ç¿¬È÷ ³×ÀÌƼºêº¸´Ù ´À¸±°Ì´Ï´Ù. ±×·¡µµ ¸î ÃÊ·Î ³¡³ªÁö ½Í½À´Ï´Ù.
3. ºñ±³... ¶ó°í Çϼ̴µ¥, ¸¸¾à Á¦°¡ ÀÌÇØÇÑ´ë·Î MD5°¡ ¹è¿ÇüÅ·ΠÂß ÀÖ°í µÎ ¹è¿ÀÇ À妽ºº° °ªÀÌ ´Ù °°ÀºÁö ¾È°°ÀºÁö ºñ±³ÇÏ´Â °Å¶ó¸é ÇÁ·Î±×·¥À¸·Î °£´ÜÇÏ°Ô µÎ ÆÄÀÏÀÇ MD5°ªÀ» ¹è¿ 2°³¿¡ Áý¾î³Ö°í forµ¹¸é¼ °°ÀºÁö °Ë»çÇÏ¸é µÇÁö ½Í½À´Ï´Ù. µÎ ÆÄÀÏÀÌ °¡Áö°í ÀÖ´Â MD5°³¼ö´Â ´ç¿¬È÷ °°°ÚÁÒ?
4. ¾Õ °è»ê °á°ú°¡ µÚÀÇ °è»ê°á°ú¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÀ¸¹Ç·Î ½º·¹µåÈ ÇÏ¸é ´õ »¡¶óÁý´Ï´Ù¸¸ ¹é¸¸°³ Á¤µµ¸é ½Ì±Û½º·¹µå·Îµµ ÃæºÐÈ÷ ³³µæÇÒ ¼Óµµ°¡ ³ª¿Ã°Ì´Ï´Ù.
5. Ȥ½Ã ÆÄÀÏ »ùÇÃÀ» °ø°³ °¡´ÉÇϽøé ÇÁ·Î±×·¥ Á¤µµ´Â Â¥ µå¸± ¼ö ÀÖ¾î¿ä.
Ȥ½Ã ½Ã°£µÇ½Ã¸é ºÎŹ µå¸³´Ï´Ù.
¼Óµµ°¡ ¾ÆÁÖ ´À¸®Áö ¾Ê´Ù¸é, ÆÄÀ̽ãÀ¸·Î Çϸé ÁÁÀ»°Å °°½À´Ï´Ù.
R ÀÌ´ø Python ÀÌ´ø DB´ø.. HTML Æ÷¸ËÀÌ ±ÍÂúÀ½À» Â÷ÁöÇÏ´Â Å« ¿ä¼ÒÀÏ °Í °°½À´Ï´Ù.
MD5 hash´Â ÇØ´çÀÌ ¾øÀ» °ÍÀ̳ª ´Ù¸¥ ºÎºÐ¿¡¼ escape ¹®ÀÚ°¡ ÀÖ´Ù¸é ±×°Íµµ ±ÍÂúÀº ¿ä¼Ò°¡ µÉ °Í °°½À´Ï´Ù.
i7-2600@3.40GHz ¿¡¼ 1ÃÊ°¡ ¾È°É¸³´Ï´Ù.
ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.
library("dplyr")
data1 = read.csv("hash_test_1.csv")
data2 = read.csv("hash_test_2.csv")
full_join(data1 %>% select(Name, Hash.Value),
data2 %>% select(Name, Hash.Value),
by = 'Name') %>%
mutate(Hash.compare = ifelse(is.na(Hash.Value.x) , "different",
ifelse(is.na(Hash.Value.y) , "different",
ifelse(Hash.Value.x != Hash.Value.y , "different",
"same")))) %>%
filter(Hash.compare == "different")
°á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù.
Name Hash.Value.x Hash.Value.y Hash.compare
1 File-16390 d3bd118f274843c67c01e1bd19827591 d3bd118f274843c67c01e1bd19827592 different
2 File-44386 21eac3a6e908334aee22ca4fbb770779 21eac3a6e908334aee22ca4fbb770778 different
3 File-144073 666cd4d110a1f7cb0cfebad833551f13 666cd4d110a1f7cb0cfebad833551f14 different
4 File-151835 be3f23fcd9ecada56fba5831f77f920c <NA> different
5 File-251270 48160880d1d68d889f15773f924b5a01 48160880d1d68d889f15773f924b5a0c different
6 File-311714 a35daa7a22747a43a21159c6f9dce482 <NA> different
7 File-318794 440c4fda328c812b6c65e23ab75221ed <NA> different
8 File-369237 d82a22968b23c58b55bedad76b5ee93b <NA> different
9 File-472363 f7ed2cadb49a6222f1d228fe32283991 f7ed2cadb49a6222f1d228fe32283990 different
10 File-472480 d0ba73fed3b6adcaf940997e14c75cb3 d0ba73fed3b6adcaf940997e14c75cb2 different
11 File-472501 <NA> 1a4c4847b8ec496cb7de207613aa6186 different
12 File-472502 <NA> 1efbc3ae6d30dc0b90236135f02b5128 different
13 File-472503 <NA> 33f30175ea9cdc22cbb8dc9907c1bf88 different
14 File-472500 <NA> c0902962257017f87fdc473eefecae4a different
15 File-472504 <NA> c2afd22c1916c75863b8d4ed157e7e14 different
16 File-472499 <NA> 11864ab6fe9b0411c13ed97f629319c5 different
17 File-472497 <NA> 6eed60ef1cd5986ac0b28f15e16b42b2 different
18 File-472498 <NA> 87185fa01decbbd1a668eb2be5c1aac8 different
RÀº ¸î³âÀü¿¡ Çѹø º¸°í ¾ÈºÃ´Âµ¥, ´Ù½Ã Çѹø ºÁ¾ß°Ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù. ^^
HWÀÇ Â÷À̵µ ÀÖÀ» ¼ö ÀÖ°ÚÁö¸¸ RÀÌ ´ë´ÜÇϳ׿ä.
1¹ø¸®½ºÆ®¿¡¼ Çϳª¾¿ »©¼ 2¹ø¸®½ºÆ®¿¡¼ ¸ÅÄ¡µÇ´Â°Å ÀÖ´ÂÁö (index»Ì´Â¹æ½ÄÀ¸·Î)
ÆÄÀ̽ãÀ¸·Î ¸¸µé¾î¼ µ¹·Áº¸´Ï e3 1220¿¡¼ 1000°³°¡ 50ÃÊ °É¸®³×¿ä..
100¸¸°³´Â ½Ã°£ÀÌ ²Ï °É¸±µí ÇÕ´Ï´Ù..
file1=open("hash_test_1.csv")
file2=open("hash_test_2.csv")
data=csv.reader(file1)
data2=csv.reader(file2)
md5set1=list(x[8] for x in data)
md5set2=list(x[7] for x in data2)
file1.close()
file2.close()
for i in md5set1:
try:
md5set2.index(i)
except:
print(i+" ¾øÀ½")
±â´É¸¸ ÇÏ¸é µÉ°Å°°¾Æ¼ ½¬´Â ½Ã°£¿¡ ±úÀÛ°Å·ÁºÃ½À´Ï´Ù.
htmlÀº Æļ µ¹·Á¾ßÇؼ ±×³É csv·Î ÀÛ¾÷Çغ¸´Ï±î ¿ª½Ã ½Ã°£Àº Á» °É¸®³×¿ä..
Å×½ºÆ® ÇØ º¸´Ï Á¤»óÀûÀ¸·Î µ¿ÀÛÀº Çϴµ¥,,, ¼Óµµ°¡ ¸¹ÀÌ ´À¸®³×¿ä..
µ¥ÀÌÅ͸¦ Á¤·Ä ÈÄ ºñ±³µîÀÇ ¹æ¹ýÀ» Á» ´õ °í¹Î ÇØ º¸°Ú½À´Ï´Ù.