問題タブ [libsodium]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
39 参照

node.js - インスタンスメソッドについて誤解していることは何ですか?

だから私はこの方法でスキーマを持っています:

それは次のように呼ばれます:

これにより、Error: argument hash must be a buffer

user[0] が有効なユーザーであることを確認できました。これは明らかにcomparePasswordメソッドの呼び出しに成功し、失敗したのは libsodium 関数であるためです。

this.passwordさらにテストした結果、未定義であることが示されました。実際、メソッドでthisは定義されていません。comparePassword私の理解ではthis、メソッドが呼び出されたオブジェクト、この場合はuser[0].

では、独自のインスタンス メソッドを呼び出すオブジェクトを参照する正しい方法は何でしょうか?

0 投票する
2 に答える
1195 参照

php - 複数のユーザーの暗号化されたドキュメントを保存する方法

オンライン システム (PHP で記述されたフロント エンドですが、あまり関連性がありません) は、ローカルのシステム管理者がデータを表示できないように、またデータベースが盗まれた場合にデータを表示できないように、暗号化された MySQL データベースにテキストを格納する必要があります。システムには、データにアクセスする必要がある複数のユーザーがいます。これらのユーザーは、標準のセットアップ (つまり、同じデータベース内のユーザー名とハッシュ化されたパスワード) を介してログイン/認証します。

保存されたデータは、認証されたユーザーに表示するためにシステムによって復号化される必要がありますが、ローカルのシステム管理者は同じデータを復号化する方法を持ってはならないため、明らかな方法は、保存されたデータを暗号化/復号化するために使用される秘密鍵を持つことです。対称暗号を使用したデータ。問題 (実際に私がアドバイスを求めている質問) は、このキーをどのように/どこに保管するかです。

認証されたユーザーはキーに直接アクセスできないため、何らかの方法でシステム内に保存し、保存されたファイルをオンデマンドで復号化するためにソフトウェアで使用する必要がありますが、ローカルのシステム管理者はこのキーを学習できてはなりません。それを使用して、保存されたデータを復号化します。

そのため、キーを暗号化してデータベースに保存する方法もありますが、システムがキーを解読してユーザーごとに使用するには、認証されたユーザーに固有のもの (パスワードなど) に対してキーを暗号化する必要があります。さて、ここまでは順調ですが、問題があります...

キーを変更する必要がある場合はどうすればよいですか? キーを変更する人は、すべてのユーザー アカウントに対して新しいキーを暗号化できるように全員のパスワードを知っている必要があるか (非現実的)、新しいキーを各ユーザーに渡して再入力するように依頼する必要があります (オプション)。

また、セキュリティの観点から、このキーをデータベースに n 回 (n はユーザー数) 効果的に保存し、異なるキー (ユーザー パスワード) で暗号化することは良い考えですか? つまり、潜在的なハッカーに同じ暗号化されたデータの複数の例を提供することで、鍵がさらに公開されるのでしょうか?

より良い方法はありますか?