windows客户端开发--为你客户端sign一个签名证书

郑重声明:该方法自娱自乐,虽然写入了签名,但是在微软系统免签证书不是合格的。

什么是签名?
话不多说,上图(没图说个xx):
微信windows客户端.exe安装文件:
这里写图片描述

再看另一个.exe文件:
这里写图片描述

通过两个图片的对比你就知道有没有数字签名的差别了吧。

好,现在开始我们的签名之旅:
首先,我要默认一个前提,你是一个程序开发者,你的pc上已经安装了visual studio。

比如说我们的exe叫test_siginature.exe,讲它放在桌面上吧。

1 打开vs工具命令提示符
这里写图片描述

2 创建 X.509 证书
在命名提示中键入:

Makecert -sv test_signature.pvk -r -nCN=大宝剑公司” test_signature.cer

这时候会提示你输入密码:
这里写图片描述

然后会出现 successed

3 创建发行者证书
键入命令:

Cert2spc test_signature.cer test_signature.spc

如果正确,也会出现successed

4 导出pfx证书文件
键入命令:

pvk2pfx -pvk test_signature.pvk -pi 密码 -spc test_signature.spc -pfx test_signature.pfx -f

其中,密码为刚刚你设置的密码。

运行完 没有success的提示。

5 对自己的软件签名
键入命令:

signtool sign /f test_signature.pfx /p 密码 C:\Users\wangs\Desktop\test_siginature.exe

主要要写.exe的全路径。

6 加盖时间戳
键入命令:

signtool timestamp /t http://timestamp.wosign.com/timestamp C:\Users\wangs\Desktop\test_siginature.exe

微信的时间戳:
这里写图片描述

完成~~~

再次声明,此方法是自娱自乐。

也就是签名证书的事儿,不花钱是办不了的。

看了几个大厂出品的软件,证书的颁发者都是:

赛门铁克(Symantec)公司成立于1982年4月,公司总部位于加利福尼亚州的 Cupertino,现已在全球 40 多个国家和地区设有分支机构,2006年全球销售额超过50亿美金,全球员工超过17,500 人。
赛门铁克是信息安全领域全球领先的解决方案提供商,为企业、个人用户和服务供应商提供广泛的内容和网络安全软件及硬件的解决方案,可以帮助个人和企业确保信息的安全性、可用性和完整性。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
支付宝支付的客户端和服务端代码比较复杂,需要进行多个步骤的签名和验证,不同的编程语言实现方式也有所不同。这里提供一个简单的参考实现,供你参考。 首先,你需要在支付宝开放平台申请应用并获取应用的AppID和RSA私钥。然后,按照以下步骤进行客户端和服务端的实现: 1. 客户端构造支付请求参数并进行签名。 ```java // 构造请求参数集合 Map<String, String> params = new HashMap<>(); params.put("app_id", "应用的AppID"); params.put("method", "alipay.trade.app.pay"); params.put("format", "json"); params.put("charset", "utf-8"); params.put("sign_type", "RSA2"); params.put("timestamp", "当前时间戳"); params.put("version", "1.0"); params.put("notify_url", "支付宝服务器异步通知页面路径"); params.put("biz_content", "{\"out_trade_no\":\"商户订单号\",\"total_amount\":\"订单总金额\",\"subject\":\"订单标题\",\"body\":\"订单描述\",\"timeout_express\":\"超时时间\",\"product_code\":\"QUICK_MSECURITY_PAY\"}"); // 对参数集合进行签名 String sign = SignUtils.sign(params, "应用的RSA私钥", "utf-8", "RSA2"); params.put("sign", sign); // 将请求参数集合转换为字符串 String orderParam = OrderInfoUtil.buildOrderParam(params); ``` 2. 客户端调用支付宝SDK发起支付请求。 ```java // 构造支付请求对象 PayTask payTask = new PayTask(activity); // 调用支付宝SDK发起支付请求 String orderResult = payTask.pay(orderParam, true); ``` 3. 服务端接收支付宝异步通知并进行验签。 ```java // 接收支付宝异步通知并转换为参数集合 Map<String, String> params = convertRequestParamsToMap(request.getParameterMap()); // 验证签名 boolean isSignVerified = AlipaySignature.rsaCheckV2(params, "支付宝公钥", "utf-8", "RSA2"); if (isSignVerified) { // 验签通过,处理业务逻辑 } else { // 验签不通过,忽略该通知 } ``` 在上述代码中,`SignUtils`和`OrderInfoUtil`是支付宝官方提供的工具类,通过这些工具类可以方便地构造支付请求参数和验签。如果你使用其他编程语言进行开发,可以参考支付宝开放平台提供的相关文档和SDK进行实现。 需要注意的是,支付宝支付涉及到用户的敏感信息和资金,安全性非常重要。在实现过程中,务必遵循支付宝的开发规范和安全要求,确保支付过程的安全可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一苇渡江694

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值