Webフォームからサーバーにユーザー名とパスワードのデータを送信しようとしています。サーバーに送信されたパスワードを暗号化する方法
パスワードはhttps接続を介してプレーンテキストとして送信され、保存される前にサーバー上で適切に暗号化されます(ただし、Python hashlib.sha224
を使用しています)。しかし、暗号化された形式でパスワードテキストを送信する方法がわかりません。
私のウェブクライアントはjavascriptで書かれており、サーバはpythonで書かれている。
Webフォームからサーバーにユーザー名とパスワードのデータを送信しようとしています。サーバーに送信されたパスワードを暗号化する方法
パスワードはhttps接続を介してプレーンテキストとして送信され、保存される前にサーバー上で適切に暗号化されます(ただし、Python hashlib.sha224
を使用しています)。しかし、暗号化された形式でパスワードテキストを送信する方法がわかりません。
私のウェブクライアントはjavascriptで書かれており、サーバはpythonで書かれている。
JavaScriptで暗号化する必要があります。残念ながら、JavaScriptは暗号化ツールを一切提供していないため、サードパーティのライブラリを使用するか、独自のものを書く必要があります。
HTTPSはトラフィック全体を暗号化することを目的としているため、余分なものは必要ありません。しかし、もしあなたがこれを見てみると、Articleが問題を明らかにしているかもしれません。がんばろう ! :)
https
は、です。あなたは上手い。
とにかくクライアント側にしたい場合は、sha1
でハッシュすることをお勧めします。この男にはいくつかのlibsがあるようです:http://pajhome.org.uk/crypt/md5/ - SHA1、sha256、md5など
実際には、SSLを使用しているため、パスワードを暗号化して送信します。 さらに、をのパスワードで暗号化しないでください。ハッシュサーバーのパスワード。
とにかく、jCryptionのようなものを使用できます。 crypt-jsもあなたの目的に合うかもしれません。
PythonにはPyCryptoという暗号ライブラリがあります。しかし、私はJavascriptとPythonの間の通信に問題があります。私は似たようなことをしようとしますが、それに問題があります。私の質問があなたのお手伝いをすると思います。
Include nonce and block count in PyCrypto AES MODE_CTR
しかし、一般的に、あなたはすでに、HTTPSを使用することによって、自分で問題を解決しました。
パスワードをサーバーに送信するHTTPSチャネルは、十分な暗号化を提供します。
ただし、パスワードのためのより安全なストレージメカニズムが必要です。何千ものハッシュ反復で "bcrypt"のようなアルゴリズムを使用してください(bcryptはこれをコスト係数と呼びます。少なくとも16であり、2 の反復を意味します)、ランダムな "塩"です。これは、計算コストの高いプロセスであるパスワードから暗号化キーを導出し、そのキーを使用して既知の暗号テキストを暗号化し、将来のログイン試行時に比較するために保存します。
また、ログインのみでHTTPSを使用するだけでは不十分です。認証されたユーザーを必要とする、または認証Cookieを所持するすべての要求に使用する必要があります。
http
とは逆に、https
は暗号化されたプロトコルです。クライアントとサーバーの間に追加の暗号化は必要ありません。
SHA224
,SHA1
またはMD5
は暗号化ではなく、hashing functionです。つまり、これらは元に戻せません。
一部の回答は、クライアント側のパスワードをハッシュすることを示唆しています。 しかし、は不可逆性であり、可逆性の意味ではありません。一般的なパスワードハッシュを使用すると、ハッシュから一致するパスワードを取得するのは比較的容易です(たとえば、Rainbow tablesを参照)。
そのため、クライアント側にパスワードをハッシュが、サーバ側で選択されたいくつかの任意の文字列とそれを連結するべきではありません(通常塩と呼ばれる)、その結果をハッシュ。
httpsは暗号化です。誰が正確にデータを読まないようにしていますか? – mfrankli
https接続の場合、問題は何ですか? –
さらに、ハッシング!=暗号化。 'SHA *'は暗号化アルゴリズムではありません。 – delnan