我继承了一个 PHP 项目,该项目可以真正受益于前向纠错,因为它涉及(可能)用户键入无限可变长度的 base64 编码字符串。该字符串目前被分成 6 个字符的组,以便于人类转录,并在处理之前重新组合在一起,但由于将人类引入方程式,错误仍然可能并且确实会发生。
短字符串或复制粘贴的字符串通常都可以。手动输入冗长的异常值才是真正受益的地方。
我已经确定 Reed Solomon 是最有可能实现这一目标的候选人(但我很高兴被那些有更多实践经验的人指出更合适的 FEC)。
有人知道我可以在这个 PHP 应用程序中使用的开源 RS 编码器和解码器吗?我发现了几个我可能可以从 QRCode 库中破解的编码器,但解码器似乎是神话般的。我当然可以选择采用几个 C 实现并重新编写它们(我是程序员而不是数学专家,所以从头开始编写一个可能超出我的能力)。
目前的数据看起来像这样(仅表示,可能不是有效的 base64!):
fD48Sa 483CDf 18ACDx UYh5jS PQXNT
我想在分割后对每个块应用 RS 编码(延长每个块,我接受这一点,从项目的角度来看这是可以接受的),或者在字符串被分割成 6 个块之前应用它.根据我对RS的理解,这将是更复杂的选项,因为字符串不是固定长度。
在提出 FEC 想法的“尤里卡”时刻之后,我希望能够找到能够让我做到这一点的东西:
// messy encode pseudocode for demonstration purposes
$data = "Once upon a time in a land far far away";
$encoded = base64_encode($data);
$split = chunk_split($encoded, 6, ' ');
foreach($split as $chunk) {
$rsEncoded .= rsEncode($chunk) . " ";
}
然后在输入时执行类似的 rsDecode() 。
任何提示表示赞赏...