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

Python을 사용하여 비밀 관리를 위한 보안 난수 생성

<시간/>

안전한 난수를 암호화 방식으로 생성하기 위해 비밀을 사용할 수 있습니다. 파이썬에서 모듈. 이 모듈은 보안 암호, 계정 인증, 보안 토큰 또는 일부 관련 비밀을 만드는 데 유용합니다.

secrets 모듈의 클래스와 모듈을 사용하려면 해당 모듈을 코드로 가져와야 합니다.

import secrets

난수

비밀 모듈은 임의의 안전한 소스에 액세스하는 데 사용됩니다. 이는 운영 체제에서 제공합니다.

비밀 모듈의 난수와 관련된 클래스와 함수는 -

클래스 비밀.SystemRandom

일부 최고 품질의 소스를 사용하여 난수를 생성하는 클래스입니다. 이러한 소스는 운영 체제에서 제공합니다.

메서드 secrets.choice(시퀀스)

이 방법은 비어 있지 않은 시퀀스에서 무작위로 요소를 선택하는 데 사용됩니다.

메서드 secrets.randbelow(n)

이 방법은 0에서 n(Exclusive) 범위에서 하나의 정수 값을 선택하는 데 사용됩니다.

메서드 secrets.randbits(k)

이 메서드는 k개의 임의 비트를 가진 정수를 반환하는 데 사용됩니다.

토큰 생성

비밀 모듈은 또한 일부 보안 토큰을 생성할 수 있습니다. 이러한 유형의 토큰은 비밀번호 재설정, 복잡한 URL 등을 생성하는 데 유용합니다.

토큰 생성과 관련된 일부 방법은 다음과 같습니다. -

메서드 secrets.token_bytes([nbytes=None])

이 메서드는 보안 토큰을 생성하기 위해 nbytes가 포함된 임의의 바이트 문자열을 반환합니다. nbytes 값을 지정하지 않으면 지정된 기본값을 사용합니다.

메서드 secrets.token_hex([nbytes=None])

이 메서드는 16진수 형식의 임의의 텍스트 문자열을 반환합니다. 반환된 문자열에는 nbytes의 임의 바이트가 있습니다. 각 문자는 두 개의 16진수로 변환할 수 있습니다. nbytes 값을 지정하지 않으면 지정된 기본값을 사용합니다.

메서드 secrets.token_urlsafe([nbytes=None])

이 메서드는 임의의 URL 안전 텍스트 문자열을 반환하는 데 사용됩니다. 텍스트는 기본적으로 Base64로 인코딩됩니다. 평균적으로 각 바이트는 1.3자입니다(대략).

예시 코드

import secrets
my_sequence = ['K','?','D',':','o','5','t','l','Y','0']
rand_pass = ''
for i in range(15):
   rand_char = secrets.choice(my_sequence)
   rand_pass += rand_char
print("Random Password is: " + rand_pass)
my_tok1 = secrets.token_hex(10) #Create HEX token of length 10 
my_tok2 = secrets.token_hex(5) #Create HEX token of length 5
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)

출력

Random Password is: YK0l:YD??lKKY?o
First Token: f3e68646dcf1082e1038
First Token: e4ae3c2384