비밀

비밀 에서 Python

{other: "%{count}개의 연습 문제"}

비밀 소개

이전 개념에서 random 모듈을 다뤘어요. 이 모듈은 의사 난수와 의사 난수 목록 순서를 만들어요.

secrets 모듈은 일부 기능이 random과 겹치지만, 두 모듈은 아주 다른 목표를 두고 설계됐어요.

  • random은 모델링과 시뮬레이션에서 높은 성능을 내도록 최적화되어 있고, "충분히 괜찮은" 수준의 의사 난수 생성을 제공해요.
  • secrets는 비밀번호 해싱, 보안 토큰 생성, 계정 인증 같은 용도에서 암호학적으로 안전하도록 설계됐어요.

secrets 모듈이 왜 필요했는지에 대한 자세한 내용은 PEP 506에 나와 있어요.

secrets 모듈은 비교적 작고 단순해요. 무작위 정수, 비트, 바이트, 토큰을 만들거나 주어진 시퀀스에서 무작위로 항목 하나를 뽑는 메서드를 제공해요.

secrets를 사용하려면 먼저 import해야 해요:

>>> import secrets

# Returns n, where 0 <= n < 1000.
>>> secrets.randbelow(1000) 
577

# 32-bit integers.
>>> secrets.randbits(32) 
3028709440

>>> bin(secrets.randbits(32))
'0b11111000101100101111110011110100'

# Pick at random from a sequence.
>>> secrets.choice(['my', 'secret', 'thing']) 
'thing'

# Generate a token made up of random hexadecimal digits.
>>> secrets.token_hex() 
'f683d093ea9aa1f2607497c837cf11d7afaefa903c5805f94b64f068e2b9e621'

# Generate a URL-safe token of random alphanumeric characters.
>>> secrets.token_urlsafe(16) 
'gkSUKRdiPDHqmImPi2HMnw'

보안에 민감한 애플리케이션을 작성하고 있다면, 더 많은 조언과 예제가 담긴 전체 문서를 꼭 읽어보길 권해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요