次のようなデータ行がある場合:
1, 2, 3
すべての列の合計であるチェックサム値 1 + 2 + 3 = 6 を作成できます。この値を 4 番目の列の行に格納できます。
1, 2, 3, 6
次に、列の合計がチェックサム値と一致しない場合に、列の値が誤って変更されていないかどうかを確認するプログラムを作成できます。
さて、これをさらに一歩進めたいと思います。前に説明したように、データの最後の列が前の列の合計である、誰でも読み取り/書き込みアクセスできる値のテーブルがあるとします。
1, 2, 3, 6
誰かがこっそりと 3 番目の列の値を変更したいとします。
1, 2, 9, 6
チェックサムは簡単に再現できるため、この行が改ざんされていないように見えるように、チェックサム値を 1 + 2 + 9 = 12 に変更するだけです。
1, 2, 9, 12
ここで私の質問は、より洗練されたチェックサム値を作成して、卑劣な個人がチェックサムを無効にせずにこの種の変更を行うことができないようにするにはどうすればよいかということです。おそらく、行の最初の 3 つの値を指定して、次のようなもう少し洗練されたチェックサムを与えることができるブラックボックス exe を作成できます。
a^2 + b^2 + c^2
しかし、このロジックは卑劣なユーザーには知られていませんが、値をブラック ボックス exe に入力して、有効なチェックサムを取得することができます。
テーブル内のすべての行が改ざんされていないことを確認する方法についてのアイデアはありますか? 私が回避しようとしている方法は、作成中のプログラムを使用して正当に変更されるたびにテーブルのコピーを保存することです。これは可能ですが、非常に洗練されていない解決策のようです。もっと良い方法があるはずですよね?