17

特に python では、暗号化がどのように機能し、コード化されているかを完全に理解するのに苦労しています。基本を理解し、最も単純な形式でコードを作成しようとしています。

2 つの異なるサイト間でユーザー ID を渡す予定ですが、明らかにこれを秘密鍵で暗号化して、Website2 が Website1 からのものであることを認識できるようにする必要があります。これは私にとってはコードのようです: http://docs.python.org/library/hashlib.html#module-hashlibですが、あまり良い例がありません (または、間違った場所にいる可能性があります)。

私が抱えている問題は、エンコードとデコードの方法を完全に理解することです。

したがって、各 Web サイトが認識する共有秘密鍵は次のようになります。

shared_private_key = "ABCDEF"

そして、Website1 が Website2 に次のユーザー ID を渡すようにします。

userID = "123456"

Web サイト 1 は、暗号化を HTTP ヘッダー経由で送信できるように秘密鍵を使用してユーザー ID を暗号化し、Web サイト 2 が共有秘密鍵を使用してユーザー ID を解読して読み取ることができるようにするにはどうすればよいでしょうか?

このような基本的な質問をして申し訳ありませんが、これをどのように行うべきかを理解できていません。ありがとう。

4

3 に答える 3

20

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)

最後に、データと署名を Web サイト 2 に送信します。そうすれば、許可されていない人がデータを改ざんしていないことを (ほぼ) 確信できます。

于 2011-01-27T18:21:12.027 に答える
17

必要なのは、ハッシュ アルゴリズムを提供するだけの暗号化ライブラリではありません。Python のhashlibライブラリを使用する場合:

import hashlib
m = hashlib.sha1()
m.update("The quick brown fox jumps over the lazy dog")
print(m.hexdigest())

戻り値:2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

このハッシュを考えると 、元のメッセージを復元することは (一般的に)非常に困難です。必要なのは、Python 標準ライブラリにはない暗号化ライブラリです。SO のPython 暗号化ライブラリに関連する質問がたくさんあります。

于 2011-01-27T18:24:55.663 に答える
3

Python標準ライブラリには暗号化アルゴリズムがありません。pycryptoを試してみてください。ここにいくつかの例があります。

于 2011-01-27T18:12:18.700 に答える