使用indy的IdSSLOpenSSLHeaders完成支付宝RSA2签名

前段时间做银行的支付接口,其中用到和支付宝新的RSA2一样的签名方法,网上的文章大多数都是用libeay32.pas封装的openssl函数去实现的,在测试的时候无意发现里面的函数和IdSSLOpenSSLHeaders里面的基本是一致的,想到应该是新的indy也封装了这些东西,研究了下,折腾了一天终于搞定了…

直接上代码吧,这样写的代码比以前要少很多

usesIdGlobal, IdSSLOpenSSL, IdSSLOpenSSLHeaders, EncdDecd;function Sign(msg, keyfile: ansistring; zfj, jmfs: integer;var signstr: ansistring): integer;//zfj:字符集 0 utf8 1 gbk  jmfs:加密方式 0RSA 1RSA2 2MD5
varPath: ansistring;pkey: PEVP_PKEY;bp, mbp: PBIO;md_ctx: EVP_MD_CTX;Buf: ansistring;len: integer;SigBuf: Array [0 .. 4095] of AnsiChar;SigLen: integer;InBuf: Array [0 .. 1023] of AnsiChar;
beginresult := -1;tryif (not FileExists(keyfile)) thenbeginresult := -2;exit;end;// 签名      sign_type=RSA2 或RSABuf := Trim(msg);if zfj = 0 then // 如果用UTF-8请UTF8编码Buf := utf8encode(Buf);len := length(Buf);bp := BIO_new_file(PansiChar(keyfile), 'r'); // 加载私钥trypkey := PEM_read_bio_PrivateKey(bp, nil, nil, nil);finallyBIO_free(bp);end;case jmfs of0:EVP_SignInit(@md_ctx, EVP_sha1); // 如果用RSA用 EVP_sha11:EVP_SignInit(@md_ctx, EVP_sha256); // 如果是RSA2用 EVP_sha2562:EVP_SignInit(@md_ctx, EVP_md5); // 如果用MD5用 EVP_md5end;EVP_SignUpdate(@md_ctx, PansiChar(Buf), len);EVP_SignFinal(@md_ctx, @SigBuf, @SigLen, pkey);signstr := EncodeBase64(@SigBuf, SigLen);result := 0;excepton E: Exception doresult := -3;end;
end;

开发支付宝支付用DELPHI实现 RSA2签名相关推荐

  1. java服务端开发支付宝支付接口,网页支付与app支付

    s 前言 在开发的过程中,不可避免的都需要使用支付功能,本文档主要给大家分享,自己的一次支付宝开发时的经历.支付宝开发,对于个人开发者而言相对于其他支付来说相对比较友好,因为有沙箱环境支持我们在开发阶 ...

  2. Java教程:如何申请Java开发支付宝支付中的必要参数(AppID,支付宝公钥,应用私钥)

    今天我们要说的是,如何去申请支付宝付款开发当中需要的一些必要参数,比如AppID,支付宝公钥,应用私钥 第一步: 首先我们打开支付宝开放平台链接:https://open.alipay.com/pla ...

  3. iOS开发支付宝支付

    iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析 浏览: 149 发布日期: 2016-10-19  分类: ios  最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑, ...

  4. php开发支付宝支付密码忘记了怎么办_PHP接入支付宝教程

    0.准备工作 支付宝账号验证 签约接口 私钥生成 1. 拼凑订单 1.1 拼装订单 1.2 私钥签名 2 服务器端处理 2.1 支付宝处理流程图 3 代码实现 3.1 开启CURL 3.2 填写配置 ...

  5. php开发支付宝支付密码忘记了怎么办_PHP实现个人支付宝支付开发(一)

    在网站开发过程中,特别是商城类网站,都会要求网站必须能实现在线支付的功能.此时就需要通过第三方的支付平台来实现完整的交易流程.常见的第三方支付平台就比如支付宝,那么网站实现支付宝在线支付功能就需要进行 ...

  6. php开发支付宝支付密码忘记了怎么办_php编程之如何调用支付宝支付接口的实现...

    对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝.微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支 ...

  7. php开发支付宝支付密码忘记了怎么办_php支付走过的坑(支付宝篇 注册 秘钥 环境等等配置)...

    支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...

  8. androidAPP 接入微信/支付宝支付,获取应用的签名(随笔)

    一.问题: app在开发过程中,接入到支付功能,常见的支付供应商就是微信/支付宝了,在官网注册时就需要一串签名: 二.解决办法:这个需要下载获取签名的工具即可: 下载签名工具 三.具体步骤: 1..安 ...

  9. php开发支付宝支付密码忘记了怎么办_密码箱忘记密码怎么办?密码箱解锁方法大全...

    密码箱忘记密码经常发生,有时候急着赶车赶飞机必须用的证件在密码行李箱,怎么办?破坏? 当你忘记密码的时候千万不要着急,不要试着用暴力破坏密码锁. 操作方法一 此类型的密码箱的开锁方法.把箱子放在光线好 ...

最新文章

  1. 海尔智慧家庭食联网:为每1个家庭配备专属健康顾问
  2. 关注地方门户网站盈利模式
  3. Windows XP文件夹右键属性没有“安全”选项卡的解决
  4. 信号与系统郑君里上册pdf_信号与系统(上册)
  5. python模块化编程_什么是模块,Python模块化编程(入门必读)
  6. Python是否支持短路?
  7. php filtervar函数用法,PHP过滤器 filter_has_var() 函数用法实例分析
  8. docker配置网易云镜像
  9. 常用的电子产品安规基础标准 - IEC Standards(CB转换或各国安规标准)
  10. 超级弱口令检查工具使用简介
  11. 你知道吗?一个比房地产更大的超级泡沫正风靡全国!
  12. MATLAB地图工具箱学习总结(一)从地图投影说起
  13. 【Pytorch的优化器总结归纳】
  14. 靠着游戏收入支撑打造众多口碑产品的网易,下一个20年会如何走
  15. 2022年,软件测试还能学吗?别学了,软件测试岗位饱和了...
  16. 2020 GDUT Rating Contest I (Div. 2) A - Cow Gymnastics 题解
  17. openPOWERLINK开源POWERLINK协议栈说明文档中文非官方翻译
  18. RGB (255,0,0)或0x00FF0000
  19. 构建Django模型
  20. [Python 爬虫]煎蛋网 OOXX 妹子图爬虫(1)——解密图片地址

热门文章

  1. PAT-1078 Hashing
  2. 【报告分享】2021年中国微商市场研究白皮书-艾瑞咨询(附下载)
  3. 简单总结笔试和面试中的海量数据问题
  4. java.sql.SQLException: connection holder is null
  5. 我的架构梦:(三)MyBatis源码分析
  6. android 鸟兽大战类的设计,大班科学活动:鸟兽大战
  7. c++面向对象程序设计—考试题及习题讲解
  8. harbor仓库的构建及简单使用(修订版)
  9. 与CSDN学生大本营一起的日子
  10. [python学习笔记]loc与iloc函数的用法及区别