0

我客户的 PHP Web 应用程序从第 3 方导入 CSV 数据,我的任务是通过使用校验和对每行 CSV 数据执行奇偶校验来验证传入数据。来自第 3 方 CSV 的示例行如下所示:

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

该行的最后一个值是从第 3 方发送的单字节十六进制校验和,我需要使用 XOR 奇偶校验来验证前面的字符。由第三方指定的算法是:

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;
}

这将盲目地执行整个字符串,包括该校验和变量。因此,您必须添加一些基本的“它是逗号”类型逻辑并跳过不需要的数据。目前尚不清楚您是否也对校验和值进行异或。

于 2013-05-27T17:30:39.550 回答