from operator import itemgetter
book = {'A' : 'AA', 'B' : 'AD', 'C' : 'AF', 'D' : 'AG', 'E' : 'AV', 'F' : 'AX',\
'G' : 'DA', 'H' : 'DD', 'I' : 'DF', 'J' : 'DG', 'K' : 'DV', 'L' : 'DX',\
'M' : 'FA', 'N' : 'FD', 'O' : 'FF', 'P' : 'FG', 'Q' : 'FV', 'R' : 'FX',\
'S' : 'GA', 'T' : 'GD', 'U' : 'GF', 'V' : 'GG', 'W' : 'GV', 'X' : 'GX',\
'Y' : 'VA', 'Z' : 'VD', '0' : 'VF', '1' : 'VG', '2' : 'VV', '3' : 'VX',\
'4' : 'XA', '5' : 'XD', '6' : 'XF', '7' : 'XG', '8' : 'XV', '9' : 'XX',\
' ' : 'AC'}
file = open('yes_temp.txt','rt')
content = file.read()
file.close()
text = content
key_text = input('암구어를 입력하세요 : ')
key_list = list(key_text)
def re_book(book_value):
rev_book = {}
for x in book_value:
re = book_value[x]
rev_book[re] = x
return rev_book
def changer(text, book): #환자 암호로 전환
change = []
for x in text:
val = book[x]
change.append(val)
return change
def rm_sort(key): #암구어 문자 중복 제거
my_set = set()
save = []
for e in key:
if e not in my_set:
save.append(e)
my_set.add(e)
return save
def list_create(key_top,text_list_value,len_text,len_key):
save_text = [['P']*2 for i in range(len_key)]
for x in range(int(len_key)):
if save_text[x][0] == ('P'):
save_text[x][0] = key_top[x]
for y in range(int(len_text)):
if save_text[y%len_key][1] == ('P'):
save_text[y][1] = text_list_value[y]
else:
save_text[y%len_key].append(text_list_value[y])
for z in range(int(len_key)):
if len(save_text[z]) != len(save_text[(z+1)%len_key]):
save_text[z+1].append('P')
return save_text
def sort_print(temp,key_num,new_temp):
temp.sort(key = itemgetter(0))
print_enc = []
for x in range(key_num):
new_temp[x].pop(0)
for y in new_temp:
for z in y:
print_enc.append(z)
return print_enc
def relist(list_value, key_value, count):
save_list = []
save_list_o = [[]*1 for i in range(len(key_value))]
save_list_x = []
num = 0
pop_data = []
for x in key_value:
for y in range(len(key_value)):
if list_value[y][0] == x:
save_list.append(list_value[y])
for t in range(len(key_value)):
l = save_list[t].pop(0)
pop_data.append(l)
for r in range(int(count / len(key_value))):
for o in save_list:
pop_x = o.pop(0)
save_list_x.append(pop_x)
for o in range(count):
if len(save_list_o[num]) >= int(count/len(key_value)):
num = num + 1
save_list_o[num].append(save_list_x[o])
for k in range(len(key_value)):
save_list_o[k].insert(0, pop_data[k])
for z in range(count + len(key_value)):
if save_list_o[z%len(key_value)].count('P') >= 1:
if save_list_o[z%len(key_value)].index('P') >= 1:
check = save_list_o[z%len(key_value)].pop(save_list_o[z%len(key_value)].index('P'))
del check
return save_list_o
def create_enc_list(enc_value,key_value,len_text,len_key):
save_text = [[]*1 for i in range(len_key)]
for x in range(int(len_key)):
if len(save_text[x]) <= 1:
save_text[x].append(key_value[x])
for y in range(int(len_text)):
save_pop = enc_value.pop(0)
if len(save_text[int(y/int(len_text/len_key))]) <= int(len_text/len_key):
save_text[int(y/int(len_text/len_key))].append(save_pop)
else:
save_text[int(y/len_key) + 1].append(save_pop)
return save_text
def create_decbook_list(dec_text_value,len_text,len_key):
decbook = [[]*1 for i in range(int(len_text/2))]
sum_decbook = []
for x in range(len_text):
if len(decbook[int(x/2)]) < 2:
decbook[int(x/2)].append(dec_text_value[x])
for y in range(int(len_text/2)):
sum_dec = "".join(decbook[y])
sum_decbook.append(sum_dec)
return sum_decbook
sum_text = "".join(changer(text, book))
sum_text_list = list(sum_text)
len_text_o = len(sum_text_list)
len_key = len(rm_sort(key_list))
key_list_value = rm_sort(key_list)
key_list_sort = sorted(key_list_value)
save_list_create = list_create(key_list_value, sum_text_list,len_text_o,len_key)
enc_text = sort_print(save_list_create, len_key, save_list_create)
enc = "".join(enc_text)
file = open('enc.txt','wt+')
file.write(enc)
file.close()
len_text_enc = len(enc_text)
new_book = re_book(book)
enc_list_make = create_enc_list(enc_text,key_list_sort,len_text_enc,len_key)
relist_value = relist(enc_list_make, key_list_value, len_text_enc)
dec_text = sort_print(enc_text, len_key, relist_value)
dec_change_text = create_decbook_list(dec_text, len(dec_text), len(key_list))
dec_value = changer(dec_change_text, new_book)
dec = "".join(dec_value)
file = open('dec.txt','wt+')
file.write(dec)
file.close()
반응형
'Code' 카테고리의 다른 글
'Nmap-python' 모듈을 이용한 Nmap Port Scanner [Python] (0) | 2020.02.07 |
---|---|
제로 데이 개념의 공격 코드 [Python] (0) | 2020.02.07 |
SSH Bot_Net 환경 구축하기 [Python] (0) | 2020.02.07 |
레지스트리의 무선 AP 분석 [Python] (0) | 2020.02.07 |