Python/Project 9

SHA256을 이용한 File 무결성 확인 - 공부하는 도비

지난 피드에서 파이썬 SHA256이나 MD5 사용법에 대해 알아보았습니다. 2022.11.21 - [파이썬/프로젝트] - [파이썬] hashlib의 SHA 사용 - 공부하는 도비 [파이썬] hashlib의 SHA 사용 - 공부하는 도비 SHA는 "Secure Hash Algorithm"의 약자로 1993년 미국의 NSA가 만들고 미국 국립 표준 기술 연구소에서 표준으로 제정한 해시 함수입니다. SHA는 SHA-0, SHA-1, SHA-2, SHA-3 순으로 발전되어 왔습니다. 자세한 내 yang-wistory1009.tistory.com 2022.11.21 - [파이썬/프로젝트] - [파이썬] hashlib의 MD5 사용 - 공부하는 도비 [파이썬] hashlib의 MD5 사용 - 공부하는 도비 MD5는..

Python/Project 2022.11.21

hashlib의 SHA 사용 - 공부하는 도비

SHA는 "Secure Hash Algorithm"의 약자로 1993년 미국의 NSA가 만들고 미국 국립 표준 기술 연구소에서 표준으로 제정한 해시 함수입니다. SHA는 SHA-0, SHA-1, SHA-2, SHA-3 순으로 발전되어 왔습니다. 자세한 내용은 아래 위키 백과를 참고해주세요. https://ko.wikipedia.org/wiki/SHA SHA - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설 ko.wikipedia.org 파이썬은 SHA-2, SHA-3 시리즈의 SHA-256, SH..

Python/Project 2022.11.21

hashlib의 MD5 사용 - 공부하는 도비

MD5는 "Message-Digest algorithm 5"의 약자로 1991년 만들어진 128bit 길이의 해시값을 출력하는 해시함수입니다. 자세한 내용은 아래 위키백과를 참고해주세요. https://ko.wikipedia.org/wiki/MD5 MD5 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 ko.wikipedia.org 파이썬에서 MD5 해시함수를 사용하려면 파이썬 자체에서 제공하는 hashlib 모듈의 md5나 Pycryptodome 모듈에서 제공하는 MD5를 임포트 하면 ..

Python/Project 2022.11.21

단일 치환 암호 해독 (패턴 분석 공격) - 공부하는 도비

단일 치환 암호는 무차별 대입 공격이나 빈도수 분석을 통하여 암호문을 해독할 수 있습니다. 오늘은 단일 치환 암호를 해독하는 방법 중 패턴 분석을 사용하여 암호를 분석해보려고 합니다. 패턴 분석 방법은 Known plaintext Attack 방법 중 하나로, "공격자가 일정 부분의 평문과 이에 대응하는 암호문을 가진 상태에서 공격하는 유형"을 의미합니다. 알려진 평문 공격을 하면, 단순히 무차별 대입 공격이나 빈도수 분석을 하는 것보다 암호문 해독이 더 수월해집니다. 예시를 통하여 패턴 분석을 해보도록 하겠습니다. 아래는 단일 치환 암호로 암호화 한 문장입니다. 만약 빈도수 분석을 하면, 여기서 가장 많이 나온 글자를 찾아 알바벳 빈두수에 따라 하나하나 치환하며 암호문을 해독해야 합니다. 위 암호문에 ..

Python/Project 2022.11.14

파이썬 확장 유클리드 알고리즘(Extended Euclidean Algorithm) 구현 - 공부하는 도비

2021.05.21 - [파이썬/프로젝트] - [파이썬] 유클리드 알고리즘(Euclidean Algorithm) - 공부하는 도비 [파이썬] 유클리드 알고리즘(Euclidean Algorithm) - 공부하는 도비 오늘은 간단한 코드 하나를 소개해볼까 합니다. 유클리드 알고리즘은 두 정수의 최대공약수를 쉽게 계산할 수 있도록 하는 것입니다. (자세한 유클리드 알고리즘의 설명은 위키피디아를 참고해 yang-wistory1009.tistory.com gcd(최대공약수) 를 계산하는 알고리즘을 저번 글에서 소개했었습니다. 이번엔, 확장된 유클리드 알고리즘 코드를 보여드릴까 합니다. * 확장 유클리드 알고리즘 : 두 정수 a, b 가 주어질 때, 다음을 만족하는 다른 두 정수 s 와 t 를 계산한다. 간단히 말..

Python/Project 2021.05.21

파이썬 유클리드 알고리즘(Euclidean Algorithm) 구현 - 공부하는 도비

오늘은 간단한 코드 하나를 소개해볼까 합니다. 유클리드 알고리즘은 두 정수의 최대공약수를 쉽게 계산할 수 있도록 하는 것입니다. (자세한 유클리드 알고리즘의 설명은 위키피디아를 참고해주세요.) # Euclidean Algorithm import sys a, b = map(int, sys.stdin.readline().split()) print(" ") q, r = 0, 0 while(True): if a < b : a, b = b, a # swap q = a // b r = a - (q*b) print(a ,'=', q, '*', b, '+', r) if r == 0: print("\ngcd = ", b) if b == 1: print("relatively prime") break a = b b = r ..

Python/Project 2021.05.21

파이썬 고전 암호(치환 암호 구현).ver 2 - 공부하는 도비

2021/02/03 - [파이썬/프로젝트] - [파이썬] 고전 암호(치환 암호 구현).ver 1 - 공부하는 도비 [파이썬] 고전 암호(치환 암호 구현).ver 1 - 공부하는 도비 # 고전 암호 - 치환 암호 def substitution_codebook(): encbook = {'a':'c', 'b':'f', 'c':'d', 'd':'p', 'e':'z', 'f':'j', 'g':'h', 'h':'a', 'i':'b', 'j':'l', 'k':'m',\ 'l':'n', 'm':'e', 'n':'q', 'o':'y'.. yang-wistory1009.tistory.com 저번엔 사용자가 임의로 치환하고자 하는 값을 미리 소스코드에 정의해뒀는데, 사실 알파벳 a 부터 z 까지 겹치지 않게 신경 써서 딕셔..

Python/Project 2021.02.03

파이썬 고전 암호(치환 암호 구현).ver 1 - 공부하는 도비

# 고전 암호 - 치환 암호 def substitution_codebook(): encbook = {'a':'c', 'b':'f', 'c':'d', 'd':'p', 'e':'z', 'f':'j', 'g':'h', 'h':'a', 'i':'b', 'j':'l', 'k':'m',\ 'l':'n', 'm':'e', 'n':'q', 'o':'y', 'p':'s', 'q':'r', 'r':'t', 's':'o', 't':'w', 'u':'x', 'v':'i', 'w':'k', 'x':'u', 'y':'g', 'z':'v'} decbook = {} for k in encbook: temp = encbook[k] decbook[temp] = k return encbook, decbook def encrypt(msg1..

Python/Project 2021.02.03