Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하는 MD5 해시 인코딩?

<시간/>

데이터 보안에 대한 모든 IT 회사의 주요 관심사 중 하나입니다. 데이터를 투영하고 확인하기 위해 여러 해싱 기술이 있습니다.

해시란 무엇입니까

해시는 가변 길이의 바이트 시퀀스를 입력으로 받아 고정 길이 시퀀스로 변환하는 함수입니다. 그러나 원래 데이터(입력 바이트)를 다시 가져오는 것은 쉽지 않습니다. 예를 들어 x가 입력이고 f가 f가 해싱 함수인 경우 f(x)를 계산하는 것은 빠르고 쉽지만 x를 다시 얻으려고 시도하는 것은 매우 시간이 많이 걸리는 작업입니다.

해시 함수의 반환 값을 해시, 체크섬, 해시 값 또는 메시지 다이제스트라고 합니다.

위와 같이 요약할 수 있습니다 -

Python을 사용하는 MD5 해시 인코딩?

"Hello World" 메시지를 md5 해시 함수로 변환하려는 경우 결과는 a,

입니다.

Python을 사용하는 MD5 해시 인코딩?

실제 시나리오에서 해시 함수는 암호 및 더 많은 영역을 저장하기 위해 암호화 알고리즘, 디지털 서명, 지문에서 많이 사용됩니다. 파이썬 프로그래머로서 우리는 데이터 또는 파일의 이중성을 확인하고, 공용 네트워크를 통해 데이터를 전송할 때 데이터 무결성을 확인하고, 데이터베이스에 비밀번호를 저장하는 등의 해시 함수가 필요합니다.

주로 사용되는 두 가지 해시 함수 또는 알고리즘은 -

  • MD5 - MD5 또는 메시지 다이제스트 알고리즘은 128비트 해시 값을 생성합니다. md5 알고리즘에는 몇 가지 보안 문제가 있으므로 주로 데이터 무결성을 확인하는 데 사용합니다.

  • - 미국 연방 정보 처리 표준에 의해 개발된 알고리즘의 SHA 그룹에 속하는 여러 알고리즘이 있습니다. 이러한 알고리즘은 md5보다 훨씬 더 안전하므로 암호화 응용 프로그램을 비롯한 여러 영역에서 널리 사용됩니다. 이러한 알고리즘에 의해 생성된 메시지의 범위는 160비트에서 512비트입니다.

MD5

Python 표준 라이브러리에는 대부분의 인기 있는 해싱 알고리즘이 포함된 hashlib라는 모듈이 포함되어 있습니다. 대부분의 알고리즘은 hashlib 모듈 내에서 구현되지만 OpenSSL이 설치된 경우 hashlib를 사용하여 이러한 알고리즘도 사용할 수 있습니다.

먼저, 해싱 알고리즘을 사용하려면 hashlib 모듈을 가져오세요 -

hashlib 가져오기

이제 hashlib 모듈에서 필요한 알고리즘 또는 모든 알고리즘을 현재 사용할 수 있는지 확인하려면 −

>>> print(hashlib.algorithms_available){'sha3_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'dsaEncryption', 'dsaWithSHA', 'DSA', 'md5', ' sha384', 'sha224', 'sha3_384', 'ecdsa-with-SHA1', 'DSA-SHA', 'SHA1', 'md4', 'SHA256', 'MD4', 'sha3_512', '월풀', ' sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 

hashlib 모듈을 통해 사용할 수 있는 위의 알고리즘 목록에는 OpenSSL을 통한 알고리즘이 포함됩니다.

그러나 항상 사용 가능한 알고리즘 목록을 확인하려면 algorithm_guaranteed를 통해 확인할 수 있습니다.

>>> print(hashlib.algorithms_guaranteed){'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5' Shake_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}

md5 알고리즘을 통해 간단한 프로그램을 하나 만들어 봅시다 -

코드

hashlibhash_obj 가져오기 =hashlib.md5(b'Hello, Python!')print(hash_obj.hexdigest())

출력

a0af7810eb5fcb84c730f851361de06a

위의 코드는 "Hello, Python!"을 사용합니다. string을 입력으로 사용하고 해당 문자열의 HEX 다이제스트를 인쇄합니다. Hexdigest는 해시를 나타내는 HEX 문자열을 반환합니다.

그러나 반환된 바이트 시퀀스를 원하면 −

와 같이 hash_obj.diget()을 사용해야 합니다.
import hashlibhash_obj =hashlib.md5(b'Hello, Python!')#생성하려면 바이트열의 시퀀스(hash_obj.digest())

출력

b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'

문자열 리터럴 앞에 'b'를 사용했음을 알 수 있습니다. 이것은 문자열에서 바이트를 생성하기 위한 것입니다. 해시 함수는 바이트 시퀀스만 매개변수로 허용합니다.

콘솔에서 문자열을 전달하려는 경우 문자열을 바이트 시퀀스로 인코딩하는 것을 잊지 마십시오 -

import hashlibmystring =input('해시할 문자열 입력:')hash_obj =hashlib.md5(mystring.encode())print(hash_obj.hexdigest())

출력

해시할 문자열 입력:Hello, TutorialsPoint9a5d3fad65690dcf44adaec67226abe7