• 微信公众平台——验证消息真实性


    微信公众平台——验证消息真实性

    uses IdHashSHA, IdGlobal;

    function SHA1(Input: String): String;
    begin
    with TIdHashSHA1.Create do
    try
    Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input))));
    finally
    Free;
    end;
    end;

    function CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;
    var
    signature, timestamp, nonce, echostr: String;
    tmpstr: TStringList;
    temp: String;
    begin
    tmpstr := TStringList.Create;
    try
    signature := ARequestInfo.Params.Values['signature'];
    timestamp := ARequestInfo.Params.Values['timestamp'];
    nonce := ARequestInfo.Params.Values['nonce'];

    echostr := ARequestInfo.Params.Values['echostr'];
    tmpstr.Add(Token);
    tmpstr.Add(timestamp);
    tmpstr.Add(nonce);
    tmpstr.Sort;
    temp := StringReplace(tmpstr.text, #13#10, '', [rfReplaceAll]);
    Result := SHA1(temp) = signature;
    finally
    tmpstr.Free;
    end;
    end;

    procedure TForm1.IdHTTPServerCommandGet(AContext: TIdContext;
    ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
    begin
    if CheckSignature(ARequestInfo) then
    if ARequestInfo.Params.Values['echostr'] <> '' then
    begin
    AResponseInfo.ContentType := 'text/html; charset=UTF-8';
    AResponseInfo.ContentText := ARequestInfo.Params.Values['echostr'];
    end;
    end;

  • 相关阅读:
    04:布尔表达式
    python中的operator模块
    python习题-4
    北大OJ1001
    [工具]toolbox_graph_laplacian
    [工具]toolbox_graph_normal_displayment
    [工具]toolbox_graph_isomap
    [工具]toolbox_graph_建立欧式距离邻接矩阵
    [工具]toolbox_graph_Floyd算法
    [工具]toolbox_graph_dijkstra算法
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/8987580.html
Copyright © 2020-2023  润新知