leejhstory
해시 / 시저 암호 본문
hash
1. 1way(단방향 방식)
2. 충돌
hashlib이라고 구글링하면
코드 설명이 나온다.
복호화 키가 없을 때 암호화 푸는 공격
brute force : 모든 경우의 수를 대입
dictionary attack : 단어를 가지고 대입
rainbow table : 해시 함수(MD5, SHA-1, SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 저장한 표
대칭키 : 암호키와 복호키가 같은 것
- 대표로 AES 암호화
비대칭키 : 암호키와 복호키가 다른 것
- 대표로 RSA 암호화
암호화키 : 공개키(Public Key), 복호화키 : 개인키(Private Key)
시저 암호
문자를 순서로 배열한 뒤에 순서를 밀거나 당겨서 치환하는 것.
c = (p + k) mod 26
c : 암호문
p : 문자열
k 암호화키
mod 26 : 26으로 나눈 나머지
omxvm를 복호화하기(by 용구)
def main():
a = [chr(m) for m in range(ord('a'), ord('z')+1)]
encryp = "omxvm"
for key in range(0, 26):
cypher = []
klist = a[:26-key]
b = a[26-key:]
b.extend(klist)
for i in encryp:
cypher.append(b[a.index(i)])
print("key : {}, text : {}" .format(key, cypher))
if __name__ == '__main__':
main()
affine 암호
[a~z], +, *
+[0~25]
*[a*b=1(mod 26)] : a(암호화), b(복호화) 는 곱하기 key
+,* 순으로 암호화를 하면 *,+ 순으로 복호화를 한다.
hill 암호
어려움!!
'공부자료 > 파이썬' 카테고리의 다른 글
numpy 설치 (0) | 2017.04.14 |
---|---|
구조체 / 해더파일 생성 (0) | 2017.04.14 |
SETS(집합) (0) | 2017.04.13 |
lotto 복권 (0) | 2017.04.12 |
if 문 / LIST(배열) / Random함수 (0) | 2017.04.12 |
Comments