JavaScriptで双方向暗号化を行う方法はありますか?
4 に答える
ハッシュ値ではなく、プレーンなパスワード テキストをデータベースに保存します。
そうしないでください。人々はあなたのパスワードを信頼しています。それらを保護するのはあなたの責任です。
サーバーに送信する前にパスワードを暗号化したいのですが、サーバーは C# を使用して暗号化を解除し、プレーン テキストに戻すことができます。私のケースに適したJavaScript暗号化を知っている人はいますか?
なし。ブラウザとサーバー間で転送されるデータを保護するのに適した唯一のシステムは SSL です。HTTPS スキームを使用します。
ユーザーのパスワードをプレーンな形式で保存するのは悪い考えだという Quentin の意見に同意します。
安全なデータ暗号化のために、RSA などの非対称暗号化アルゴリズムを使用できます。公開鍵は JavaScript 側に保存され、C# サーバーには、受信した暗号文を RSA を使用して復号化するための秘密鍵があります。
サーバーがパスワードを平文に復号化できる場合、悪者も復号化できます。
パスワードをプレーンテキストとしてサーバーに送信してから、通常の形式に変換するmd5()
かsha1()
、そのままデータベースに保存する必要があります。
次に、ユーザーがログインしたいときに、パスワード入力を暗号化し、以前に保存したものと比較します。
クライアントからサーバーへのデータ転送を保護する場合は、https を使用してデータが傍受されないようにする必要があります。
幸運を
私の個人的な意見では、Javascriptを使用して暗号化する最良の方法は、SHA-1を使用することです。最悪のMD5は使用しないでください(復号化が簡単すぎます)。このライブラリを使用できます:http://pajhome.org.uk/crypt/md5/sha1.html
そしてそれをこのように使用します:
var encrypted_password = hex_sha512(plain_password);
Javascriptの欠点は、パスワードソルト(http://en.wikipedia.org/wiki/Salt_(cryptography))を追加しても、誰もが誰でも(そうでなければ、パスワードを暗号化できません)。
最も安全なのは、この特定の理由でHTTPSを使用したサーバー側での暗号化です。そうでない場合、このライブラリは非常に簡単に機能します。