delphi 与php传输参数的签名,类似微信公众号的签名过程

delphi7年前 (2019)发布 admin
455 0

Delphi端(单机),签名端

uses
 uQRCode, DateUtils,IdHash,IdHashMessageDigest;

procedure TForm1.btn3Click(Sender: TObject);
var
ttrim,ss,str,str1,str2:string;
 MD5: TIdHashMessageDigest5;
begin
MD5 := TIdHashMessageDigest5.Create;
str := 'http://***.*********.com/hb/index.php';
  

  str1:=参数2;
  ttrim:=参数1;
  key:=密钥;
//简易签名过程
 ss :=MD5.HashStringAsHex(str1+ttrim+key);//烁珣
url:='?0o0o00oo='+ttrim+'&o0o0='+str1+'&oo00oo='+ss;
//生成二维码
img2.Canvas.FillRect(rect(0, 0, img2.Width, img2.Height));
CreateQRCode(url, 0, 0, 3, img2.Canvas.Handle);

end;

php端(联网)。验证签名端

 $a=$_GET['0o0o00oo']; //显示"ok"

 $b=$_GET['o0o0']; //显示"ok"

 $c=$_GET['oo00oo']; //显示"ok"
//key即密钥,排除传输参数的验证
$d=strtoupper(md5($a.$b.key));
 //验证签名
  if ($d=$c){
echo '验证通过';
//可以再次验证签名是否已经使用过了,以保证不可以被重复扫码
}
else
{
echo '验证失败';
}

© 版权声明

相关文章