使用PHP进行XOR奇偶校验

时间:2013-05-27 17:16:20

标签: php checksum xor parity

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

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

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

  

对记录中的所有数据进行XOR,逐个字符,截断为一个字节。异或校验和导致总和为零。不要包含逗号或换行符。

我意识到这是教科书CS 101,但我只是不确定如何在代码中实现算法,即使我确实理解XOR,以及我们在这里想要实现的目标。验证此数据的应用程序是使用PHP编写的,但使用任何类似语言的实现都将非常有用。

1 个答案:

答案 0 :(得分:0)

基本上:

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

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