Python 文字列を暗号化する

Vaibhhav Khetarpal 2023年1月30日
  1. Python で Simple Crypt を使用して文字列を暗号化する
  2. Python で cryptocode ライブラリを使用して文字列を暗号化する
  3. Python で Cryptography パッケージを使用して文字列を暗号化する
  4. Python で RSA アルゴリズムを使用して文字列を暗号化する
Python 文字列を暗号化する

暗号化は、プレーンテキストを暗号文に変換するプロセスとして定義できます。基本的に、データをエンコードするために使用されます。暗号化プロセスにはキーが必要です。キーは後で元のメッセージを復号化するために使用できます。

この記事では、Python で文字列を暗号化するために利用できるさまざまな方法について説明します。

Python で Simple Crypt を使用して文字列を暗号化する

Simple Crypt モジュールを使用することは、Python 2.7 および 3 の暗号化プロセスを実現するための最も速くて簡単な方法です。このメソッドは、1 行のコードを使用して、プレーンテキストを数秒で暗号文に変換します。

PyCrypto モジュールは、このライブラリのアルゴリズム実装を提供し、AES256 暗号を使用します。このメソッドは、暗号文が変更または変更されたときに通知するために、HMAC チェックと SHA256 暗号を組み込んでいます。

Simple Crypt には、encryptdecrypt の 2つの機能があります。これらの両方の機能を使用するには、pycrypto モジュールと Simple Crypt モジュールの両方をインストールすることが不可欠です。

次のコードは、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

Python で cryptocode ライブラリを使用して文字列を暗号化する

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

関数の最初のパラメーターは、暗号化する必要のある文字列です。2 番目のパラメーターは、復号化の目的で使用されるキーである必要があります。

Python で Cryptography パッケージを使用して文字列を暗号化する

Cryptography は、対称鍵暗号化を実現するために使用できる 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 クラスインスタンスで復号化されます。

対称鍵暗号化は、文字列を暗号化するための簡単な方法です。唯一の欠点は、比較的安全性が低いことです。キーを持っている人は誰でも暗号化されたテキストを読むことができます。

Python で RSA アルゴリズムを使用して文字列を暗号化する

Python の RSA アルゴリズムは、非対称キー暗号化を実装しています。非対称キー暗号化は、暗号化と復号化のプロセスに 2つの異なるキーを使用します。

これらの 2つのキーは、秘密キーと公開キーです。公開鍵は公開されており、暗号化のプロセスに使用されます。公開鍵を持っている人は誰でもデータを暗号化して送信できます。受信者だけが秘密鍵を持っています。さらに、それにアクセスできる誰かがデータを復号化することもできます。

この方法を使用するには、最初に 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 です。

非対称鍵暗号化は、対称鍵暗号化よりも優れたセキュリティを提供します。前者と同様に、特定の秘密鍵は受信者のみがアクセスでき、復号化の目的で使用されます。後者にはキーが 1つしかないのに対し、送信者と受信者の中間にいるサードパーティによる攻撃からの復号化プロセスが容易になり、安全性が低下します。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

関連記事 - Python String

関連記事 - Python Encryption