function MakeSign(const AParams: TStringList; const AppSecret: string;var sortQueryStringTmp :String): string;
  var
    I: Integer;
    sortedQueryString :string;
    stringToSign: string;
    sSign :string;
    outs:  TStringList;

    pn,pv:string;

    skey:Tbytes;
 begin

    outs:= TStringList.Create;

    SortString( AParams,outs);

    // 参数拼接
    sortQueryStringTmp := '';

    for I := 0 to outs.Count - 1 do
    begin

      pn:=specialUrlEncode(outs.Names[I]);

      pv:=specialUrlEncode(outs.Values[outs.Names[I]]);

      sortQueryStringTmp := sortQueryStringTmp +pn + '='+ pv+'&';

    end;
   setlength(sortQueryStringTmp,length(sortQueryStringTmp)-1);
    sortedQueryString:=sortQueryStringTmp;

    stringToSign :='GET&%2F&' +  specialUrlEncode(sortedQueryString);

    memo3.Lines.Text:=stringToSign;

    skey:=THashSHA1.GetHMACAsBytes(Tencoding.UTF8.GetBytes(stringToSign), Tencoding.UTF8.GetBytes(AppSecret+'&'));


     sSign := TBase64Encoding.Create.EncodeBytesToString(skey);
     Result :=specialUrlEncode(sSign);

  end;

xalion写的,不是我!

相关文章:

  • 2021-09-13
  • 2021-12-12
  • 2021-11-03
  • 2021-11-03
  • 2021-10-28
猜你喜欢
  • 2021-06-24
  • 2021-08-07
  • 2022-12-23
  • 2021-06-06
  • 2021-04-26
  • 2021-11-04
相关资源
相似解决方案