HOWTO · Python

Python 문자열 암호화

이 자습서에서는 Python에서 문자열을 암호화하는 방법을 보여줍니다.

암호화는 일반 텍스트를 암호문으로 변환하는 프로세스로 정의 할 수 있습니다. 기본적으로 데이터를 인코딩하는 데 사용됩니다. 암호화 프로세스에는 나중에 원본 메시지를 해독하는 데 사용할 수있는 키가 필요합니다.

이 기사에서는 Python에서 문자열을 암호화하는 데 활용할 수있는 다양한 방법에 대해 설명합니다.

Simple Crypt를 사용하여 Python에서 문자열 암호화

Simple Crypt모듈을 사용하는 것은 Python 2.7 및 3의 암호화 프로세스를 달성하는 가장 빠르고 간단한 방법입니다.이 방법은 한 줄의 코드를 사용하여 몇 초 만에 일반 텍스트를 암호 텍스트로 변환합니다.

PyCrypto모듈은이 라이브러리에 대한 알고리즘 구현을 제공하며AES256암호를 사용합니다. 이 방법은SHA256암호와HMAC검사를 통합하여 암호 텍스트가 변경되거나 수정 될 때이를 알립니다.

Simple Crypt에는encryptdecrypt의 두 가지 기능이 있습니다. 이 두 기능을 모두 사용하려면pycryptosimplecrypt 모듈을 모두 설치해야합니다.

다음 코드는simplecrypt를 사용하여 Python에서 문자열을 암호화합니다.

from simplecrypt import encrypt, decrypt

passkey = "wow"
str1 = "I am okay"
cipher = encrypt(passkey, str1)
print(cipher)

이 코드의 출력은 임의의 문자 클러스터입니다.

암호문을 디코딩 / 복호화하려면 다음 명령을 사용합니다.

print(decrypt("wow", cipher))

출력:

I am okay

cryptocode라이브러리를 사용하여 Python에서 문자열 암호화

cryptocode라는 용어는 Python 3 이상에서 안전하고 간단하게 문자열을 암호화하고 해독 할 수있는 간단한 라이브러리입니다. 이 라이브러리는 수동으로 설치해야합니다. pip명령을 사용하여 수행 할 수 있습니다.

아래 프로그램은cryptocode라이브러리를 사용하여 Python에서 문자열을 암호화합니다.

import cryptocode

str_encoded = cryptocode.encrypt("I am okay", "wow")
# And then to decode it:
str_decoded = cryptocode.decrypt(str_encoded, "wow")
print(str_decoded)

출력:

I am okay

함수의 첫 번째 매개 변수는 암호화해야하는 문자열입니다. 두 번째 매개 변수는 암호 해독 목적으로 사용될 키 여야합니다.

Cryptography패키지를 사용하여 Python에서 문자열 암호화

‘암호화’는 대칭 키 암호화를 달성하는 데 사용할 수있는 Python 패키지입니다. 대칭 키 암호화는 인코딩 및 디코딩 프로세스에 동일한 키를 사용하는 방법입니다.

암호화에이 방법을 사용하려면Cryptography라이브러리를 설치해야합니다. pip명령을 사용하여 수행 할 수 있습니다.

다음 코드는cryptography패키지 함수를 사용하여 Python에서 문자열을 암호화합니다.

from cryptography.fernet import Fernet

str1 = "I am okay"
key = Fernet.generate_key()

fernet = Fernet(key)

enctex = fernet.encrypt(str1.encode())

dectex = fernet.decrypt(enctex).decode()

print("The primordial string: ", str1)
print("The Encrypted message: ", enctex)
print("The Decrypted message: ", dectex)

출력:

The primordial string: I am okay
The Encrypted message: <a stack of random letters>
The Decrypted message: I am okay

위의 코드에서는cryptography.fernet모듈에서Fernet을 가져옵니다. 그런 다음 인코딩 및 디코딩 목적으로 사용될 암호화 키를 생성합니다. Fernet 클래스는 암호화 키로 인스턴스화됩니다. 그런 다음 문자열은 Fernet 인스턴스로 암호화됩니다. 마지막으로 Fernet 클래스 인스턴스로 해독됩니다.

대칭 키 암호화는 문자열을 쉽게 암호화 할 수있는 방법입니다. 유일한 단점은 상대적으로 덜 안전하다는 것입니다. 키가있는 사람은 누구나 암호화 된 텍스트를 읽을 수 있습니다.

RSA알고리즘을 사용하여 Python에서 문자열 암호화

Python의RSA알고리즘은 비대칭 키 암호화를 구현합니다. 비대칭 키 암호화는 암호화 및 암호 해독 프로세스에 두 개의 다른 키를 사용합니다.

이 두 키는개인 키및공개 키입니다. 공개 키는 공개이며 암호화 프로세스에 사용됩니다. 공개 키를 가진 사람은 누구나 데이터를 암호화하고 보낼 수 있습니다. 수신자 만 개인 키를 가지고 있습니다. 또한 액세스 권한이있는 사람도 데이터를 해독 할 수 있습니다.

이 방법을 사용하려면 먼저rsa라이브러리를 설치해야합니다. 이 라이브러리를 설치하기 위해 일반pip명령을 사용할 수 있습니다.

다음 코드는RSA알고리즘을 사용하여 Python에서 문자열을 암호화합니다.

import rsa

pubkey, privkey = rsa.newkeys(512)

str1 = "I am okay"

enctex = rsa.encrypt(str1.encode(), pubkey)


dectex = rsa.decrypt(enctex, privkey).decode()
print("The primordial string: ", str1)
print("The Encrypted message: ", enctex)
print("The Decrypted message: ", dectex)

출력:

The primordial string: I am okay
The Encrypted message: <a stack of random letters>
The Decrypted message: I am okay

위의 코드에서rsa모듈을 가져오고rsa.newkeys()함수를 사용하여 공개 및 개인 키를 생성합니다. 그런 다음공개 키를 사용하여 문자열을 암호화합니다. 그런 다음개인 키만 사용하여 문자열을 해독 할 수 있습니다. 이 프로그램의 경우 공개 및 개인 키는 각각pubkeyprivkey입니다.

비대칭 키 암호화는 대칭 키 암호화보다 더 나은 보안을 제공합니다. 전자에서와 같이 특정개인 키는 수신자 만 액세스 할 수 있으며 암호 해독 목적으로 사용됩니다. 후자에는 하나의 키만 존재하는 반면, 발신자와 수신자 중간에있는 제 3 자의 공격으로부터 복호화 프로세스가 더 쉽고 안전하지 않습니다.