728x90
반응형
지난 피드에서 파이썬 SHA256이나 MD5 사용법에 대해 알아보았습니다.
2022.11.21 - [파이썬/프로젝트] - [파이썬] hashlib의 SHA 사용 - 공부하는 도비
2022.11.21 - [파이썬/프로젝트] - [파이썬] hashlib의 MD5 사용 - 공부하는 도비
해시함수는 파일의 무결성 확인에 사용이 됩니다.
오늘은 두 파일(문서)에 대한 무결성 확인을 해보려고 합니다.
해시 함수는 데이터의 아주 작은 부분만 달라져도 해시값이 완전히 변한다는 특징을 가지고 있기 때문에,
사람이 찾아낼 수 없는 미세한 변화도 해시 값을 통해, 파일의 위변조를 알 수 있게 됩니다.
plain_modify.txt 파일은 plain.txt 파일의 첫 줄 "Once when I was~~"가 "once when I was~"로 첫 번째 알파벳만 소문자로 달라진 경우입니다.
두 파일을 가지고 아래 코드를 실행시키면,
from hashlib import sha256 as SHA
SIZE = 1024*256 # 256KB 크기만큼 파일을 읽음
def getFileHash(filename):
sha = SHA()
h = open(filename, 'rb')
content = h.read(SIZE)
while content:
sha.update(content) # 256KB 만큼 정보를 읽고, 해시 값을 업데이트 함
content = h.read(SIZE) # 파일에서 그 다음 256KB를 읽음
h.close()
hashval = sha.digest() # 최종 해시값 계산
return hashval
def hashCheck(file1, file2):
hashval_1 = getFileHash(file1)
hashval_2 = getFileHash(file2)
if hashval_1 == hashval_2:
print("Two Files Are Same")
else:
print("Two Files Are Different")
if __name__ == '__main__':
file1 = 'plain.txt'
file2 = 'plain_modify.txt'
hashCheck(file1, file2)
아래와 같은 결과가 나옵니다.
원본의 데이터 값이 변경되면, 해시값도 변하게 되고
원본 데이터와 변경된 데이터의 무결성 검증을 하면, 두 파일이 다르다는 걸 알 수 있게 됩니다.
만약, 같은 파일을 가지고 코드를 실행시킨다면 두 파일이 같다는 결과를 볼 수 있습니다.
'Python > Project' 카테고리의 다른 글
3DES를 사용하여 파일 암/복호화 후 SHA256으로 무결성 확인 - 공부하는 도비 (0) | 2022.11.21 |
---|---|
hashlib의 SHA 사용 - 공부하는 도비 (0) | 2022.11.21 |
hashlib의 MD5 사용 - 공부하는 도비 (0) | 2022.11.21 |
단일 치환 암호 해독 (패턴 분석 공격) - 공부하는 도비 (2) | 2022.11.14 |
파이썬 확장 유클리드 알고리즘(Extended Euclidean Algorithm) 구현 - 공부하는 도비 (0) | 2021.05.21 |