php生成校验序列号

<?php
$str = 1111;
$end = 9999;
$salt = array('L','J','S','H');
$str = rand($str,$end);
$a = $str.$str%ord($salt[0]);
$str = rand($str,$end);
$b = $str.$str%ord($salt[1]);
return $a."-".$b;//生成序列号

//193838-354971
$res = '193838-354971';//验证序列号
$flag = true;
$salt = array('L','J','S','H');
$res = explode('-',$res);
foreach ($res as $k=>$v) {
    $v_start = substr($v,0,4);
    $v_end = substr($v,4);
    $v_new = $v_start-$v_end;//把两数的模减去
    if($v_new%ord($salt[$k])){//如果有模,则验证失败(上一步已经把两数的模减去了,不可能还有模)
        $flag = false;
    }
}
return $flag;

发表评论

电子邮件地址不会被公开。 必填项已用*标注