0

私のクライアントの PHP Web アプリケーションは、サード パーティから CSV データをインポートします。私は、チェックサムを使用して CSV データの各行でパリティ チェックを実行することにより、受信データを検証する任務を負っています。サード パーティの CSV の行の例は次のようになります。

7450122,8267632,13042013,AP130413-044024,JD012038742880009933,41

行の最後の値は、サード パーティから送信された 1 バイトの 16 進数チェックサムで、XOR パリティ チェックを使用して前の文字を検証する必要があります。サードパーティによって指定されたアルゴリズムは次のとおりです。

レコード内のすべてのデータを 1 文字ずつ XOR し、1 バイトに切り捨てます。チェックサムを XOR すると、合計がゼロになります。カンマや改行文字を含めないでください。

これが教科書 CS 101 であることは理解していますが、XOR とここで達成しようとしていることは理解していますが、アルゴリズムをコードに実装する方法がわかりません。このデータを検証するアプリケーションは PHP で作成されていますが、同様の言語で実装すると非常に役立ちます。

4

1 に答える 1

0

基本的:

$str = '7450......933';
$val = substr($str, 0, 1);
for($i = 2; $i < strlen($var); $i++) {
   $char = substr($str, $i, 1);
   $val ^= $char;
}

これにより、そのチェックサム変数を含む文字列全体がやみくもに実行されます。したがって、いくつかの基本的な「コンマか」タイプのロジックを追加し、望ましくないデータをスキップする必要があります。チェックサム値も xor するかどうかは明確ではありません。

于 2013-05-27T17:30:39.550 に答える