leejhstory

해시 / 시저 암호 본문

공부자료/파이썬

해시 / 시저 암호

LeeJHstory 2017. 4. 13. 15:49

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