Python 文字列を暗号化する
-
Python で
Simple Crypt
を使用して文字列を暗号化する -
Python で
cryptocode
ライブラリを使用して文字列を暗号化する -
Python で
Cryptography
パッケージを使用して文字列を暗号化する -
Python で
RSA
アルゴリズムを使用して文字列を暗号化する
暗号化は、プレーンテキストを暗号文に変換するプロセスとして定義できます。基本的に、データをエンコードするために使用されます。暗号化プロセスにはキーが必要です。キーは後で元のメッセージを復号化するために使用できます。
この記事では、Python で文字列を暗号化するために利用できるさまざまな方法について説明します。
Python で Simple Crypt
を使用して文字列を暗号化する
Simple Crypt
モジュールを使用することは、Python 2.7 および 3 の暗号化プロセスを実現するための最も速くて簡単な方法です。このメソッドは、1 行のコードを使用して、プレーンテキストを数秒で暗号文に変換します。
PyCrypto
モジュールは、このライブラリのアルゴリズム実装を提供し、AES256
暗号を使用します。このメソッドは、暗号文が変更または変更されたときに通知するために、HMAC
チェックと SHA256
暗号を組み込んでいます。
Simple Crypt
には、encrypt
と decrypt
の 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()
関数を使用して公開鍵と秘密鍵が生成されます。次に、文字列は公開鍵を使用して暗号化されます。文字列は、秘密鍵のみを使用して復号化できます。このプログラムの場合の公開鍵と秘密鍵は、それぞれ pubkey
と privkey
です。
非対称鍵暗号化は、対称鍵暗号化よりも優れたセキュリティを提供します。前者と同様に、特定の秘密鍵は受信者のみがアクセスでき、復号化の目的で使用されます。後者にはキーが 1つしかないのに対し、送信者と受信者の中間にいるサードパーティによる攻撃からの復号化プロセスが容易になり、安全性が低下します。
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 で文字列からコンマを削除する
- Python で文字列を変数名に変換する
- Python 文字列の空白を削除する方法
- Python で文字列から数字を抽出する
- Python が文字列を日時 datetime に変換する方法
- Python 2 および 3 で文字列を小文字に変換する方法