0

ユーザー名とパスワードのデータを Web フォームからサーバーに送信しようとしています。

パスワードは https 接続を介してプレーン テキストとして送信され、サーバー上で ( python を使用してhashlib.sha224) 適切に暗号化されてから保存されますが、パスワード テキストを暗号化された形式でサーバーに送信する方法がわかりません。

私の Web クライアントは JavaScript で書かれており、サーバーは Python で書かれています。

4

5 に答える 5

1

SSLを使用しているため、実際には暗号化されたパスワードを送信します。さらに、パスワードを暗号化せずに、サーバー上でパスワードをハッシュします。

とにかく、jCryptionのようなものを使用できます。crypt-jsもあなたの目的に合うかもしれません。Pythonの場合、 PyCrypto
と呼ばれる暗号ライブラリがあります。しかし、JavascriptとPythonの間の通信に問題があります。私は似たようなことをしようとしますが、問題があります。私の質問はあなたの質問に役立つと思います。

PyCryptoAESMODE_CTRにナンスとブロックカウントを含める

しかし、一般的には、httpsを使用して、すでに問題を自分で解決しています。

于 2012-03-16T18:13:23.460 に答える
1

JavaScriptで暗号化する必要があります。残念ながら、JavaScript はすぐに使用できる暗号化ツールを提供していないため、サードパーティのライブラリを使用するか、自分で何かを作成する必要があります。

他の人が言ったように、HTTPS はトラフィック全体を暗号化することを意図しているので、余分なものは必要ないのではないでしょうか? ただし、そうする場合は、この記事を参照することをお勧めします。これにより、問題が明らかになる可能性があります。幸運を !:)

于 2012-03-16T18:09:33.060 に答える
0

https 暗号化された形式ですあなたは上手い。

とにかくクライアントサイドで実行したい場合は、でハッシュすることをお勧めしsha1ます。この男はそのためのいくつかのライブラリを持っているようです:http://pajhome.org.uk/crypt/md5/ --SHA1、sha256、md5など。

于 2012-03-16T18:12:33.913 に答える
0

とは対照的にhttphttpsは暗号化されたプロトコルです。クライアントとサーバーの間で追加の暗号化は必要ありません。

SHA224SHA1またはMD5暗号化ではなくハッシュ関数です。つまり、元に戻すことはできません。

いくつかの回答は、クライアント側でパスワードをハッシュすることを提案しています。ただし、元に戻せないということは、解読できないという意味ではありません。単純なパスワードがハッシュされているため、ハッシュから一致するパスワードを取得するのは比較的簡単です (たとえば、Rainbow テーブルを参照してください)。

したがって、クライアント側でパスワードをハッシュするのではなく、サーバー側で選択された任意の文字列 (通常はsaltと呼ばれる) と連結し、結果をハッシュする必要があります。

于 2012-03-16T18:23:46.650 に答える
0

パスワードをサーバーに送信する HTTPS チャネルは、十分な暗号化を提供します。

ただし、パスワードをより安全に保管するメカニズムが必要です。何千回ものハッシュ反復 (bcrypt はこれをコスト要因と呼び、少なくとも 16、つまり 2 16反復を意味する) を伴う "bcrypt" のようなアルゴリズムと、ランダムな "salt" を使用します。これは、計算コストの高いプロセスであるパスワードから暗号化キーを導出し、そのキーを使用して既知の暗号テキストを暗号化し、将来のログイン試行で比較するために保存することで機能します。

また、ログインのみで HTTPS を使用するだけでは不十分です。認証されたユーザーを必要とする、または認証 Cookie を運ぶすべての要求に使用する必要があります。

于 2012-03-16T18:16:56.597 に答える