보안/암호
전치 암호 도구 구현_2
revivekirin
2023. 8. 18. 19:05
ENC = 0
DEC = 0
def parsekey(key):
tmp = []
key.upper()
for i, k in enumerate(key):
tmp.append((i,k)) #키:인덱스, 값:알파벳
tmp = sorted(tmp, key=lambda x:x[1]) #tmp 알파벳 순서에 따라 정렬
enc_table = {}
dec_table = {}
for i, r in enumerate(tmp): #i:알파벳 순서에 따른 인덱스, r[0]:처음 인덱스
enc_table[r[0]] = i
dec_table[i] = r[0]
return enc_table, dec_table
위 parsekey 함수는 키값을 전달받아 1차로 열 번호로 인덱스를 매겨주고, 2차로 알파벳 순서에 따라 인덱스를 매겨줍니다.
아래 코드를 살펴보면 첫번째로 프린트된 tmp는 열 순서에 따라 인덱스가 매겨지고
두번쨰로 프린트된 tmp는 k의 값, 즉 알파벳의 순서에 따라 인덱스가 매겨져 리스트 내에서 튜플들이 인덱스에 따라 이동해음을 알 수 있습니다.
key = 'TRACE'
tmp = []
for i, k in enumerate(key):
tmp.append((i, k))
print(tmp)
tmp = sorted(tmp, key = lambda x:x[1])
print(tmp)
결과-> [(0, 'T'), (1, 'R'), (2, 'A'), (3, 'C'), (4, 'E')]
[(2, 'A'), (3, 'C'), (4, 'E'), (1, 'R'), (0, 'T')]
#lambda 매개변수 : 표현식
즉 이전 포스트에서 언급한
키 | T | R | A | C | E |
열 번호 | 0 | 1 | 2 | 3 | 4 |
순서 | 4 | 3 | 0 | 1 | 2 |
표가 만들어졌습니다.