Python에서 암호 생성

Namita Chaudhary 2023년6월21일
  1. Python에서 암호 생성
  2. Python에서 Random 모듈을 사용하여 암호 생성
  3. Python에서 Secrets 모듈을 사용하여 암호 생성
  4. 결론
Python에서 암호 생성

우리는 종종 데이터 유출, 사이버 위협 및 시스템에 대한 사이버 공격에 대해 듣습니다. 따라서 데이터의 보안과 기밀성은 우리 삶의 매우 중요한 부분이 되었습니다. 이제 데이터를 보호할 수 있는 방법 중 하나는 암호로 데이터를 보호하는 것입니다.

이 기사에서는 Python에서 암호 생성에 대해 설명합니다.

Python에서 암호 생성

보안에 대해 이야기할 때 암호가 자주 등장합니다. 이제 이러한 암호는 매우 중요한 데이터를 보호하는 데 사용되므로 해커가 해독하기 어려울 것입니다.

공격자는 종종 다양한 문자 조합을 무작위로 시도하고 올바른 암호를 추측하여 이러한 암호를 해독하려고 시도합니다.

우리 인간이 수동으로 암호를 생성하면 쉽게 해독할 수 있습니다. 많은 사람들이 자신의 이름을 해커가 쉽게 해독할 수 있는 숫자 및 기호와 결합하려고 시도합니다.

따라서 이러한 암호는 해독하기 쉽지 않도록 만들어야 합니다. Python에는 크랙하기 어렵고 만들기 쉬운 몇 가지 암호 생성 방법이 있습니다.

이제 그 중 일부에 대해 자세히 살펴보겠습니다.

Python에서 Random 모듈을 사용하여 암호 생성

Python의 random 모듈은 목록에서 임의의 요소를 생성합니다. 또한 Python의 random 모듈에서 choice() 메서드를 사용합니다.

choice() 메서드는 목록에서 임의의 요소를 선택합니다. 따라서 random.choice() 메서드는 이 메서드를 사용하여 암호를 생성하는 주요 캐치입니다.

그러나 이제 우리가 말하는 이 목록이 무엇인지 궁금할 것입니다. 따라서 random.choice() 메서드가 선택할 목록에는 모든 소문자와 대문자, 숫자 및 구두점 기호가 포함됩니다.

따라서 생성되는 암호에는 해독하기 어려운 이러한 문자의 임의 순서가 포함됩니다.

이제 파이썬에서 문자열 모듈을 사용하여 모든 소문자, 대문자, 숫자 및 구두점 기호를 가져옵니다. string 모듈의 ascii.lowercase 메서드는 영어 알파벳의 모든 소문자를 가져오는 데 사용되며 ascii.uppercase는 영어 알파벳의 모든 대문자를 가져오는 데 사용됩니다.

숫자와 구두점 기호를 얻기 위해 Python의 string 모듈에서 string.digitsstring.punctuation 메서드를 각각 사용합니다.

Python에서 randomstring 모듈을 사용하여 암호를 생성하는 코드를 살펴보겠습니다.

import random
import string


def passwordGen(length):
    lower = string.ascii_lowercase
    upper = string.ascii_uppercase
    digits = string.digits
    symbols = string.punctuation

    comb = lower + upper + digits + symbols

    result_str = "".join(random.choice(comb) for i in range(length))
    print("Password of length ", length, "is:", result_str)


passwordGen(12)
passwordGen(10)
passwordGen(5)

출력:

Password of length  12 is: ^)n34W6~0Wdx
Password of length  10 is: g&#'G-T\vn
Password of length  5 is: &g/S3

따라서 위 출력에서 볼 수 있듯이 고유하고 크랙하기 어려운 세 가지 다른 길이의 암호가 있습니다.

그러나 코드 예제에서는 randomstring 모듈을 가져왔습니다. 그런 다음 길이를 매개 변수로 사용하고 해당 특정 길이의 암호를 인쇄하는 passwordGen 함수를 만들었습니다.

함수 내에서 모든 문자, 숫자 및 기호를 다른 변수에 저장했습니다. 이제 이 모든 문자를 단일 문자열로 결합하여 변수 comb에 저장했습니다.

이제 random.choice(comb)를 사용하여 지정된 길이까지 각 인덱스에 대해 문자열 comb에서 임의로 문자를 선택한 다음 결과를 인쇄했습니다.

Python에서 Secrets 모듈을 사용하여 암호 생성

보안 목적으로 강력한 암호화 난수를 생성하는 데 Python의 모듈이 하나 더 사용됩니다. 이 모듈은 비밀 모듈로 알려져 있습니다. 그러나 이 모듈은 Python 버전 3.6 이상에서 사용할 수 있습니다.

비밀 모듈은 운영 체제의 가장 안전한 임의성 소스를 제공합니다. 따라서 생성된 암호는 더 안전하고 효과적입니다. 이제 Python의 secrets 모듈을 사용하여 암호를 생성하는 프로그램에 대해 논의하겠습니다.

이 프로그램은 이전에 논의한 것과 유사하지만 secrets 모듈을 사용하는 것이 시스템 보안에 더 안전하고 효과적입니다.

import string
import secrets


def passwordGen(len):
    combination = string.ascii_letters + string.digits + string.punctuation
    password = "".join(secrets.choice(combination) for i in range(len))
    print("Password is: ", password)


passwordGen(12)
passwordGen(8)

출력:

Password is:  Gz!*j3p4xd$Z
Password is:  5#;CSIa7

따라서 출력에서 볼 수 있듯이 string 메서드를 사용하여 암호를 생성하기 위해 모든 문자, 숫자 및 문장 부호를 결합하는 combination 변수가 있는 passwordGen 메서드를 만들었습니다. 파이썬의 모듈.

그런 다음 secrets.choice(combination) 메서드를 사용하고 주어진 len 길이의 암호를 만들기 위해 선택할 수 있는 모든 문자를 지정한 다음 인쇄합니다. 따라서 secrets 모듈을 사용하여 Python에서 암호 생성을 수행합니다.

결론

이 기사에서는 Python에서 암호를 생성하는 방법에 대해 설명했습니다. 보안은 이 시대의 주요 요구 사항이므로 안전하고 안전한 암호 생성이 매우 중요합니다.

이를 위해 Python에는 두 개의 모듈, 즉 randomsecrets이 있으며, 이는 어렵고 해독하기 쉽지 않은 암호를 생성하는 데 도움이 됩니다. 그러나 두 모듈 모두 문자열 모듈의 도움을 받아 선택할 문자 조합을 선택합니다.

그러나 secrets 모듈은 Python 버전 3.6에서 구현되었지만 여전히 암호를 생성하는 더 안전하고 안전한 방법으로 간주됩니다.

관련 문장 - Python String