일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조 데크
- 괄호 짝 잘맞는지
- golang
- go
- 스택 구현
- 중위수식
- 장고 하는법
- rest gql
- 장고 웹 만들기
- 스택 자료구조
- 후위수식
- 괄호 유효성
- 스택 괄호
- grid flex
- 스택 삭제
- restapi graphql
- Django tutorial
- 스택 후위수식
- 풀스택
- 스택 삽입
- 중위수식을 후위수식
- 스택 유효성
- flex html
- grid html
- 루비 초보
- rest graphql
- https://stackoverflow.com/questions/219110/how-python-web-frameworks-wsgi-and-cgi-fit-together/219124#219124
- 스택 중위수식
- 데크 구현
- 풀스택?
- Today
- Total
donchanee
Shift Cipher , Vigenere Cipher 본문
Shift Cipher 와 Vigenere Cipher의 파이썬 코드이다.
정확한 코드인지는 아직 모르겠다.
Shift Cipher 의 정의 : https://en.wikipedia.org/wiki/Caesar_cipher
Vigenere Cipher 의 정의 : https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
깃허브에도 올려놓았다.
<
import random
def shift_encrypt(msg, key):
output = ''
alphabet = "abcdefghijklmnopqrstuvwxyz"
for c in msg:
index = alphabet.find(c)
if index < 0:
output += ' '
else:
new_index = (index + key) % len(alphabet)
ctx = alphabet[new_index]
output += ctx
return output
def shift_decrypt(ctx, key):
output = ''
alphabet = "abcdefghijklmnopqrstuvwxyz"
for c in ctx:
index = alphabet.find(c)
if index < 0:
output += ' '
else:
new_index = (index - key) % len(alphabet)
plain = alphabet[new_index]
output += plain
return output
def vigenere_genkey(n):
output = ''
alphabet = "abcdefghijklmnopqrstuvwxyz"
for c in range(0, n):
a = random.choice(alphabet)
output += a
return output
def vigenere_encrypt(msg, key):
output = ''
alphabet = "abcdefghijklmnopqrstuvwxyz"
cnt = 0
for c in msg:
index = alphabet.find(c)
keyindex = alphabet.find(key[cnt])
cnt+=1
if index < 0:
output += ' '
else:
new_index = (index + keyindex) % len(alphabet)
ctx = alphabet[new_index]
output += ctx
return output
def vigenere_decrypt(msg, key):
output = ''
alphabet = "abcdefghijklmnopqrstuvwxyz"
cnt = 0
for c in msg:
index = alphabet.find(c)
keyindex = alphabet.find(key[cnt])
cnt+=1
if index < 0:
output += ' '
else:
new_index = (index - keyindex) % len(alphabet)
plain = alphabet[new_index]
output += plain
return output
>
내가 실행한 결과로는 값이 소문자로는 제대로 나왔는데 아직 대문자 처리 부분과 여러가지 부분에서 모자람이 있는 것 같다.
그래도 암호를 만들어 보니 재미있었다.