問題タブ [theory]
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.
sql - 暗号化されたデータベース クエリ
私はスタック オーバーフローについて知ったばかりで、プロジェクトの友人と一緒に持っている制約のアイデアがあるかどうかを確認しているだけですが、これは私が見つけようとしてきた理論的な質問です。しばらくの間の答え。
私は暗号化にはあまり詳しくありませんが、十分に明確でない場合は、質問を明確にするために編集/コメントを試みます。
簡単に言うと、環境は次のようなものです。
キーの暗号化/復号化へのアクセスとしてのフロントエンドと、ストレージとクエリにのみ使用されるバックエンドを持つアプリケーション。
たとえば、いくつかのフィールドにアクセスできないデータベースがある場合、通常どおり「アドレス」が text/varchar であるとします。
情報を復号化するためのキーにアクセスすることはできず、すべての情報は既に暗号化された状態でデータベースに到着します。
主な問題は、このようなものです。データベースに対して一貫してクエリを作成する方法、「'%F§YU/´~#JKSks23%' のような場所のアドレス」のようなことを行うことは不可能です。(これに対する答えを感じている人がいる場合は、遠慮なく撃ってください)。
しかし、それは大丈夫ですwhere address='±!NNsj3~^º-:'
か?それとも、データベースを完全に使い果たしてしまうのでしょうか?
適用される可能性のあるもう 1 つの制約は、フロント エンドに利用できる処理能力があまりないため、既に情報の暗号化/復号化が限界に達し始めていることです。(これは、「テーブルの結合をフロントエンドにエクスポートしてそこでクエリを実行する」などの返信を避けるためだけに言っています。)
誰かがそれについて考え続ける方向に私を向けることができますか?
午前 4 時の非常に迅速な返信に感謝します。初めての使用で、このコミュニティに感銘を受けました。(または、タイムゾーンが違うだけなのかもしれません)
いくつかの情報を提供するだけです:
主な問題は、部分一致に関するものです。ほとんどのデータベースで必須要件として、部分一致を許可する必要があります。主な制約は、実際にはデータベースの所有者がデータベース内の情報を参照することを許可されないことです。最後の 10 分間で、考えられるデータベースの問題にまで拡張する解決策を思いついたので、ここに追加します。
部分一致を許可する解決策:
- パスワード + ユーザーのいくつかの公開フィールドは、実際には暗号化の鍵です。認証のアイデアは、静的な値を暗号化し、データベース内で比較することです。
- 情報が解析された方法で格納されるテーブルの新しいセットを作成します。つまり、「4th Street」は 2 つの暗号化された行になります (「4th」用に 1 行、「Street」用に 1 行)。これにより、別のテーブルで検索が既に実行されている可能性があるため、部分的な一致が可能になります。
新しい質問:
- これはおそらくデータベースサーバーを再び食い尽くすのでしょうか、それとも部分一致の問題に対する実行可能な解決策であると誰かが考えていますか?
Post Scriptum: 私は Cade Roux からの回答を受け入れませんでした。これは、さらなる議論と、特に新しい質問に対する可能な回答を可能にするためです。
algorithm - 値を表示する単位を選択する方法は?
私は値を持っていて、それが単位であることを知っていました
メートルmn/md * kg kn/kd * s sn/sd * K Kn/Kd * A An/Ad
注: 指数は有理数であり、m 0.5の単位が有効です
問題は、ユニットをよりコンパクトなものに分解する方法をどのように選択するかです
たとえば、
N/mが使えます
これは、離散最適化問題のサブセットであると思われます。
algorithm - コンピュータ サイエンスにおける NP 完全とは何ですか?
NP完全問題とは?なぜそれがコンピュータ サイエンスの重要なトピックなのですか?
functional-programming - 参照透過性とは何ですか?
参照透過性という用語はどういう意味ですか?「equalsをequalsに置き換えることができる」と説明されていると聞きましたが、これは不十分な説明のようです。
theory - 理論的コンピューター サイエンスはどのような場合に役立ちますか?
クラスでは、停止問題、チューリング マシン、縮約などについて学びました。多くのクラスメートは、これらはすべて抽象的で役に立たない概念であり、それらを知っていても意味がないと言っています (つまり、コースが終わったら忘れることができます)。何も失うことはありません)。
理論はなぜ役に立つのか? 日常のコーディングで使用したことがありますか?
language-agnostic - フィールドで停止問題に遭遇したのはいつですか?
現場で停止の問題に個人的に遭遇したのはいつですか? これは、同僚や上司が計算の根本的な限界に違反する解決策を提案したとき、または解決しようとしていた問題が実際には解決できないことに気付いたときです。
私が最近それを思いついたのは、型チェッカーを研究していたときでした。私たちのクラスは、完全な型チェッカー (型エラーなしで実行されるすべてのプログラムを受け入れ、型エラーで実行されるすべてのプログラムを拒否するもの) を書くことは不可能であることに気付きました。 . もう1つは、同じクラスで、型チェック段階でゼロによる除算が発生するかどうかを判断することは不可能であることに気付いたときです。実行時に数値がゼロであるかどうかをチェックすることも停止問題のバージョン。
computer-science - チューリングマシンとは?
チューリングマシンとは何ですか?なぜ人々はそれについて言及し続けるのですか? IBM PC だけで計算を行うことができます。なぜ誰もがこれらのマシンを気にするのですか?
language-agnostic - ガベージ コレクションは明示的なメモリ管理と共存できますか?
たとえば、C# 4 に「delete」キーワードを含めるとします。参照ベースのシステムにより、ワイルド ポインターがまったくないことを保証できますが、ガベージ コレクターに依存することはできますか? ?
それが起こっている可能性を確認できる唯一の方法は、メモリ位置への参照の代わりに、参照が実際のオブジェクトへのポインタのテーブルへのインデックスになる場合です。ただし、それが壊れる条件がいくつかあると確信しており、タイプの安全性を破ったり、ポインターがぶら下がったりする可能性があります。
編集: .net だけについて話しているわけではありません。例としてC#を使用していました。
sql-server - SQL Server でレコードセットをフラット化しますか?
次のようなレコードセットを取得するとします。
そして、あなたが望む:
次のようなものを使用できます。
では、Foo、Bar、および Red が VARCHAR の場合、どうすれば同様のことを達成できるでしょうか?
に:
現在、主に SQL Server 2000 を使用しています。ただし、2005 サーバーにアクセスできます。
theory - コードを書くためにコードを書くことは可能ですか?
コンピューター・プログラマーにはできないことがいくつかあると聞いたことがありますが、それが何かはわかりません。最近私が思いついたことの 1 つは、実行するプログラムのソースのコピーを作成し、そのプログラムを変更し、そのクラスにメソッドを追加して実行できるクラスがあればいいのではないかということでした。プログラムのコピーを作成し、それ自体を終了します。コードでコードを書くことは可能ですか?