Hashlib sha1をw/ hashlib sha1のPython暗号化の基本
-
26-10-2019 - |
質問
私は、特にPythonで、暗号化の仕組みとコード化されている方法を完全に理解するのに苦労しています。基本を下げて、最も単純な形式でコードを作成しようとしています。
2つの異なるサイト間でユーザーIDを渡すつもりですが、明らかにこれを秘密鍵で暗号化する必要があるため、Webサイト2はWebサイトから来たことがわかります。これは私にとってのコードのようです:http://docs.python.org/library/hashlib.html#module-hashlib, 、しかし、それはあまり良い例を持っていません(または多分私は間違った場所にいます)。
私が抱えている問題は、エンコードとデコードの方法を完全に理解することです。
したがって、各ウェブサイトが知っている共有秘密鍵は次のとおりです。
shared_private_key = "ABCDEF"
そして、私はWebsite1にWebsite2に渡すことを望んでいます。
userID = "123456"
Website1は、HTTPヘッダーを介して暗号化を送信できるように、秘密鍵でユーザーIDをどのように暗号化し、Website2を復号化し、共有秘密鍵を使用してユーザーIDを読み取ることができますか?
このような基本的な質問をしてくれたことをお詫びしますが、これがどのように行われるべきかを把握できません。ありがとう。
解決
hashlib
モジュールはハッシュ機能を提供します。暗号化にはある程度の関係がありますが、ハッシュすると、ハッシュ結果から元のデータを取得するために戻ることはできません。
データを覆す代わりに、別のアプローチをとることができます。データのハッシュと秘密を使用して一意の署名を作成します。
shared_private_key = "ABCDEF"
def create_signature(data):
return hashlib.sha1(repr(data) + "," + shared_private_key).hexdigest()
def verify_signature(data, signature):
return signature == create_signature(data)
最後に、ウェブサイト2にデータと署名を送信します。そうすれば、不正な人がデータを改ざんしていないことを(ほとんど)確実にすることができます。
他のヒント
あなたが望むのは、ハッシュアルゴリズムを提供するだけの暗号化ライブラリではありません。 Pythonと hashlib
図書館:
import hashlib
m = hashlib.sha1()
m.update("The quick brown fox jumps over the lazy dog")
print(m.hexdigest())
戻り値: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
このハッシュを考えると、そうです 非常に難しい (一般的に)元のメッセージを回復することは不可能です。あなたが望むのは、Python標準ライブラリには持っていない暗号化ライブラリです。たくさんあります Python暗号化ライブラリに関連する質問 それは役に立つかもしれません。