random.getrandbits() 함수로 128비트 난수 생성하기
Python에서 임의의 128비트 값을 생성하려면 random 모듈의 getrandbits() 함수를 사용하면 됩니다. 이 함수는 비트 수를 인자로 받아 해당 크기만큼의 무작위 정수를 반환합니다.
예제 코드
import random
hash = random.getrandbits(128)
print(hex(hash))위 코드는 getrandbits(128)을 호출하여 128비트 크기의 무작위 정수를 생성한 뒤, hex() 함수를 통해 16진수 문자열 형태로 변환하여 출력합니다.
실행 결과
0xa3fa6d97f4807e145b37451fc344e58c
난수이기 때문에 프로그램을 실행할 때마다 매번 다른 값이 출력됩니다. 결과값은 항상 0x 접두사가 붙은 32자리 16진수(128비트) 형태로 표시됩니다.
보안 목적이라면 secrets 모듈 사용 권장
random 모듈은 일반적인 용도에는 적합하지만, 예측 가능성이 있어 암호화나 토큰 생성 등 보안이 중요한 작업에는 부적합합니다. 이런 경우에는 Python 3.6부터 제공되는 secrets 모듈을 사용하는 것이 좋습니다.
import secrets
secure_hash = secrets.token_hex(16) # 16바이트 = 128비트
print(secure_hash)secrets.token_hex(16)은 암호학적으로 안전한 128비트(32자리 16진수) 문자열을 생성하므로, 인증 토큰이나 세션 키 생성에 적합합니다.