Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Delphi对TStrings进行排序

Delphi对TStrings进行排序

作者头像
Vaccae
发布于 2019-07-25 03:13:55
发布于 2019-07-25 03:13:55
1.6K00
代码可运行
举报
文章被收录于专栏:微卡智享微卡智享
运行总次数:0
代码可运行

前言

最近在做一个Delphi的对接第三方支付的接口,接口签名机制模仿微信的签名方式,把参数按ascii码进行排序后再加上key进行md5的加密,因为调用接口的的Post里面的参数是TStrings类型的,但是在TStrings类型里面没有Sorted排序这个方法。所以我自己重写了一个函数用于处理这个。

实现方式

其实使用这个实现也非常的简单,虽然在TStrings里面没有Sort的排序,但是在TStringList里面有这个排序的,所以我们只要再建一个TStringList的变量,把值赋过去后再排序,然后再用Md5进行签名即可实现了。

实现代码


代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function GetSign(Params: TStrings): string;
var
  tmpParams: TStringList;
  str: string;
  i: Integer;
begin
  try
    //创建TStringList
    tmpParams := TStringList.Create;
    //将TStrings的数据全部存进TStringList
    tmpParams.AddStrings(Params);
    //给TStringList进行ascii码的排序
    tmpParams.Sorted := True;
    //根据排序我们拼接成要实现的字符串
    str := '';
    for i := 0 to tmpParams.Count - 1 do
      str := str + tmpParams.Strings[i] + '&';
    //加上最后的key后反回,再加这个生成的字符串进行md5的签名即可
    str := str + 'key=' + ZfPayCfg.appsecret;
    Result := str;
  finally
    tmpParams.Free;
  end;
end;

上面的方法就是实现排序后的Tstrings生成的字符串,然后把这个生成的字符串进行MD5的加密,delphi里面MD5的加密网上很好找,我在这就不再写了

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【干货】C#根据类生成签名字符串(附DEMO下载地址)
现在第三方支付的接口签名机制都是模仿微信签名方式,把参数按ascii码进行排序后再加上key进行md5的加密,前两天因为做Delphi的接口,所以写了一篇《Delphi对TStrings进行排序》,这次我们写一个C#把类结构生成的签名字符串。
Vaccae
2019/07/25
1K0
【干货】C#根据类生成签名字符串(附DEMO下载地址)
Delphi中利用StringList对象来记录动态生成的对象
在Delphi中,如果程序需要动态创建大量的对象,那么我们可以利用StringList对象来管理这些动态生成的对象。具体步骤如下:
Vaccae
2019/07/25
1.6K0
workerman 签名验证中间件 timestamp+nonce+sign 时间戳 + 随机数 + 签名参数接口验证
对参数进行签名,防止参数被非法篡改。sign一般是将所有非空参数按照升序排序然后+token+key+timestamp拼接在一起,然后使用加密算法进行加密,作为接口中的一个参数sign来传递,也可以将sign放到请求头中。
OwenZhang
2022/05/30
2.3K0
workerman 签名验证中间件 timestamp+nonce+sign 时间戳 + 随机数 + 签名参数接口验证
iOS参数签名:请求参数按照ASCII码从小到大排序、拼接、加密(递归的方式实现)案例:条码支付综合前置平台申请退款【修订版】
支付类app为了安全起见,除了使用【防代理分析请求数据】,还可采用签名的方式进一步进行限制防止请求和返回报文被修改。
公众号iOS逆向
2021/04/15
1.8K1
接口签名规则和Java实现签名和验签代码
签名规则 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则: ◆ 参数名ASCII码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 验证接口调用传送的sign参数不参与签名,将生成的签名与该sign值作校验。 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 注意:密钥的长度为32个字节。
oktokeep
2024/10/09
2030
python笔记44-HTTP对外接口sign签名
一般公司对外的接口都会用到sign签名,对不同的客户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求。 sign签名是一种很常见的方式
上海-悠悠
2019/10/30
1.7K0
前后端分离 , 如何保证接口安全性 ?
用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。
Jensen_97
2023/07/20
2.5K0
前后端分离 , 如何保证接口安全性 ?
PHP开发API接口签名生成及验证
开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。
OwenZhang
2021/12/08
1.5K0
【干货】Vue TypeScript根据类生成签名字符串
今天我们来说一下VueJs里根据类生成签名,标题里面说了TypeScript是因为语法相对于JavaScript严格的多,导致里面一个小问题又花费了我一两天的时间,这个后面现说。
Vaccae
2019/07/25
7250
【干货】Vue TypeScript根据类生成签名字符串
iOS小技能:封装银联接口协议(收银台的订单退款、查询机制)【上篇】
背景:如果商家平台侧服务出现问题,商家需要一个备选方案进行正常的收退款;因此在POS机新增一个开关进行切换支付通道,智能机app直接与银联对接。并在本地维护产生的订单数据和维护订单状态。
公众号iOS逆向
2022/08/22
1K0
iOS小技能:封装银联接口协议(收银台的订单退款、查询机制)【上篇】
[系列] - go-gin-api 路由中间件 - 签名验证(七)
上篇文章分享了,路由中间件 - Jaeger 链路追踪(实战篇),文章反响真是出乎意料, 「Go中国」 公众号也转发了,有很多朋友加我好友交流,直呼我大神,其实我哪是什么大神,只不过在本地实践了而已,对于 Go 语言的使用,我还是个新人,在这里感谢大家的厚爱!
新亮
2019/10/14
2.7K0
[系列] - go-gin-api 路由中间件 - 签名验证(七)
如何有效提升 API 接口的安全性?
在如今的互联网应用中,API 接口的安全性已经成为了开发过程中不可忽视的一环。越来越多的应用服务通过 API 进行数据交换,而 API 的安全性直接关系到应用的数据安全与用户隐私。因此,我们需要采取一系列措施来确保 API 的安全。
南山竹
2024/07/04
2090
如何有效提升 API 接口的安全性?
玩转ApiFox脚本实现自动化
调用API的服务URL地址,开放平台目前提供了2个环境给ISV使用:正式环境,海外环境。
物立
2022/09/15
1.6K0
PHP接入微信H5支付的方法示例
商户进行业务逻辑处理并调用微信统一下单接口,微信H5交易类型为:trade_type=MWEB
用户8675788
2021/07/13
7980
公司来了个大神,三方接口调用方案设计的真优雅~~
在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。
程序员蜗牛
2024/04/22
2.3K0
公司来了个大神,三方接口调用方案设计的真优雅~~
接口签名规则及Java代码demo实现
签名规则 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则: ◆ 参数名ASCII码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 验证接口调用传送的sign参数不参与签名,将生成的签名与该sign值作校验。 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 注意:密钥的长度为32个字节。
oktokeep
2024/10/09
1120
发卡君Python3接口
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # 需要先安装几个组件,如果缺少其他的就自行安装 # pip install requests # 引入模块 import time import json import hashlib import requests import urllib.parse # API信息查看地址:https://www.fakajun.com/api/token api_url = 'https://api.faka
_66336_909
2018/10/17
1K0
httprunner学习24-sign签名验证
一般公司对外的接口都会用到sign签名,对不同的客户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求。 sign签名是一种很常见的方式 关于sign签名的可以参考前面一篇的介绍https://www.cnblogs.com/yoyoketang/p/11742187.html
上海-悠悠
2019/11/15
7220
Android根据类排序生成签名字符串关于change和serialVersionUID的问题
前阵子写过一个关于类生成签名字符串的文章《【干货】Android根据类生成签名字符串》,当时各种测试都没有问题,最近我们做支付的动态库里自己 加了一个校验机制,用到了MD5的加密校验,引用当时的签名字符串,在我android4.3的虚拟机里测试没有问题,后来安装到我的手机android7.0后发现最后生成的MD5与原来的不一致了,发现在生成类的属性时多了一项为serialVersionUID的列,那我们来重新修改一下代码。
Vaccae
2019/07/25
6000
springboot第34集:ES 搜索,nginx
https://www.elastic.co/cn/downloads/elasticsearch
达达前端
2023/10/08
2310
springboot第34集:ES 搜索,nginx
推荐阅读
相关推荐
【干货】C#根据类生成签名字符串(附DEMO下载地址)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验