이 글에서는 Python을 사용해 지정된 길이를 가진 랜덤 문자열을 생성하는 방법을 알아봅니다. 이 기법은 무작위 비밀번호 생성기나 난수성이 필요한 다양한 프로그램을 만들 때 유용하게 활용할 수 있습니다.
random.choices() 사용하기
random 모듈의 choices() 함수는 지정된 문자 집합에서 무작위로 문자를 선택합니다. 선택된 문자들을 join()으로 연결하면 원하는 길이의 랜덤 문자열을 손쉽게 만들 수 있습니다.
예제 코드
import string
import random
# 필요한 문자열 길이
N = 5
# random.choices() 사용
res = ''.join(random.choices(string.ascii_letters + string.digits, k=N))
# 결과 출력
print("Random string : ", res)실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Random string : nw1r8
여기서 string.ascii_letters는 영문 대소문자 전체를, string.digits는 숫자 0~9를 의미합니다. 두 집합을 합친 문자 풀에서 k개의 문자를 무작위로 추출해 하나의 문자열로 결합하는 방식입니다.
secrets 모듈 사용하기
보안이 중요한 용도라면 secrets 모듈을 사용하는 것이 좋습니다. 이 모듈은 암호학적으로 안전한 난수를 생성하며, choice() 메서드를 활용해 랜덤 문자열을 만들 수 있습니다. 소문자만 사용하거나 숫자를 포함하는 등 조건을 자유롭게 지정할 수 있다는 점도 장점입니다.
예제 코드
import string
import secrets
# 필요한 문자열 길이
N = 5
# secrets.choice() 사용
res = ''.join(secrets.choice(string.ascii_lowercase + string.digits)
for i in range(N))
# 결과 출력
print("Random string : ", res)실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Random string : p4ylm
이 예제에서는 string.ascii_lowercase(영문 소문자)와 string.digits(숫자)를 결합한 문자 풀에서 N번 반복해 한 글자씩 무작위로 선택했습니다.
정리
일반적인 용도에는 간편한 random.choices()가 적합하고, 비밀번호나 인증 토큰처럼 보안성이 요구되는 경우에는 예측 불가능한 값 생성에 특화된 secrets 모듈을 사용하는 것이 권장됩니다. 상황에 맞는 모듈을 선택해 안전하고 효율적으로 랜덤 문자열을 생성해 보세요.