일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 김성엽 대표님
- lord of sql injection
- suninatas 풀이
- element 조회
- burp suite
- 조건문
- object
- htmlspecialchars
- github
- 백준 알고리즘
- IF문
- property
- jQuery
- 백준 파이썬
- document
- 객체
- window
- xss game 풀이
- blind sql injection
- xss game
- 함수
- 파이썬
- python
- 자바스크립트
- 포인터
- 메소드
- Pwndbg
- 배열
- sql injection
- 사칙연산
Archives
- Today
- Total
power-girl0-0
시저 암호(Caesar cipher) 구현하기 본문
728x90
시저 암호
시저 암호는 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서, 다른 알파벳으로 치환하는 방식이다.
여기서, 일정한 거리는 key를 의미한다.
따라서 시저 암호는 key가 필요하며, 숫자로 지정해줘야한다.
암호화와 복화화 과정도 다르기 때문에, 따로 구현해줘야 한다.
암호화는 일정한 거리만큼 밀리지만, 복호화는 이동한 거리만큼 다시 당겨야 한다.
소스코드
def encrypt_cis(msg,key): #암호화
ans = ''
dic = 'abcdefghijklmnopqrstuvwxyz'
for m in msg:
index = dic.find(m) #dic에서 해당 문자가 몇번째 문자인지 찾아준다.
if(index == -1): #공백일 경우 ( =띄어쓰기 )
ans = ans + m
else:
index = index + key # key만큼 뒤로 이동
index = index % len(dic) # index길이를 초과하지 않도록 방지한다.
ans = ans + dic[index]
return ans
def decrypt_cis(enc_msg,key): #복호화
ans = ''
dic = 'abcdefghijklmnopqrstuvwxyz'
for m in enc_msg:
index = dic.find(m)
if(index == -1):
ans = ans + m
else:
index = index - key # key만큼 앞으로 이동
index = index % len(dic)
ans = ans + dic[index]
return ans
def main():
msg = 'i love you'
key = 1
enc_msg = encrypt_cis(msg, key)
print(enc_msg)
dec_msg = decrypt_cis(enc_msg, key)
print(dec_msg)
main()
결과
아래주소를 보면서 같이, 공부하면 좋을 듯하다.
( www.tutorialspoint.com/cryptography_with_python/cryptography_with_python_caesar_cipher.htm )
728x90
'암호 프로토콜' 카테고리의 다른 글
Cryptodome 설치하기 (0) | 2021.03.25 |
---|---|
requests 모듈 (0) | 2021.03.18 |
XOR을 이용한 암호화 구현하기 (0) | 2021.03.11 |
간단한 암호화, 복호화 만들기 (0) | 2021.03.11 |
아나콘다 설치하기 (0) | 2021.03.11 |
Comments