微信支付公钥的用途及与其他密钥区别、使用意义

2025-04-05
来源:网络整理

什么是微信支付公钥

以下两种情况需要使用微信支付公共密钥:当商人验证微信付款API响应和回调通知时,商人对API请求进行加密。微信Pay具有“微信支付私钥”,商人具有“微信支付公共密钥”,微信支付使用私钥签名,商人使用公共密钥来验证签名。请将其与“商人密钥”和“密钥”区分开。

为什么使用微信支付公钥

金融互联网应用程序信息的真实性和完整性至关重要。当商家系统从微信付款中收到答复或回调通知时,它需要验证消息的真实性(以确保其来自微信工资)和诚信(不要被第三方篡改)。微信Pay为HTTP密钥信息提供数字签名。通过使用微信支付公共密钥来验证签名,商人可以确认收到的消息确实来自微信支付,而不是其他恶意党派伪造的。通过这种方式,商人可以信心处理交易请求,并避免信任错误源引起的潜在风险。

获取微信支付公钥

您需要一个超级管理员或安全联系人才能登录商户平台,输入“帐户中心安全”页面,单击以申请公共密钥,可以下载微信支付公共密钥。请务必仔细检查指南以完成开发。

详细步骤:

(1)帐户中心 - > API安全(2)微信支付公共密钥入口页

(3)下载微信支付公共密钥(4)获取公共密钥文件和公共密钥ID(公共密钥序列号)

微信支付_微信支付扣款顺序怎么设置_微信支付密码在哪改

使用微信支付公钥来使用微信支付公钥来验证签名并构建签名验证源字符串

商人开发人员应仔细阅读构造的签名源字符串,以了解如何在响应和回调通知中获得微信支付签名,以及如何构造签名源字符串。

验证签名

许多编程语言签名验证功能支持签名字符串和签名的签名验证。强烈建议商家称这种功能并使用微信支付公共密钥来验证签名字符串和签名RSA签名验证。

以下显示了如何使用命令行验证符号。假设我们已经获得了微信支付的公钥,并将其保存为.pem。内容如下:

1$ cat 1900009191_wxp_pub.pem
2-----BEGIN PUBLIC KEY-----
3MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4zej1cqugGQtVSY2Ah8RMCKcr2UpZ8Npo+5Ja9xpFPYkWHaF1Gjrn3d5kcwAFuHHcfdc3yxDYx6+9grvJnCA2zQzWjzVRa3BJ5LTMj6yqvhEmtvjO9D1xbFTA2m3kyjxlaIar/RYHZSslT4VmjIatW9KJCDKkwpM6x/RIWL8wwfFwgz2q3Zcrff1y72nB8p8P12ndH7GSLoY6d2Tv0OB2+We2Kyy2+QzfGXOmLp7UK/pFQjJjzhSf9jxaWJXYKIBxpGlddbRZj9PqvFPTiep8rvfKGNZF9Q6QaMYTpTp/uKQ3YvpDlyeQlYe4rRFauH3mOE6j56QlYQWivknDX9VrwIDAQAB
4-----END PUBLIC KEY-----

然后,使用解码的答案签名,将其保存为file.txt。

1$openssl base64 -d -A <<< \ 'CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA==' > signature.txt

最后,验证签名并获得验证结果。

1$ openssl dgst -sha256 -verify 1900009191_wxp_pub.pem -signature signature.txt << EOF
21554209980
3c5ac7061fccab6bf3e254dcf98995b8c
4{"data":[{"serial_no":"5157F09EFDC096DE15EBE81A47057A7232F1B8E1","effective_time":"2018-03-26T11:39:50+08:00","expire_time":"2023-03-25T11:39:50+08:00","encrypt_certificate":{"algorithm":"AEAD_AES_256_GCM","nonce":"d215b0511e9c","associated_data":"certificate","ciphertext":"..."}}]}
5EOF
6Verified OK

如果您对签名检测有任何疑问,请通过在线技术咨询(New)联系我们的技术支持。

使用微信支付公共密钥加密敏感信息

微信支付密码在哪改_微信支付_微信支付扣款顺序怎么设置

为了确保敏感信息字段的机密性(例如用户地址,银行卡号,手机号码等),在通信过程中,微信付费API V3要求商家加密通信过程中发送的敏感信息字段。相应地,微信工资将加密向下敏感的信息字段,商人需要在获得原始文本之前进行解密。加密和解密方法的以下细节以及如何执行相应的计算。

我们提供微信Pay API V3的官方SDK(目前包括三种语言),并使用官方的SDK调用微信支付接口,而无需关心签名生成和验证,并且访问更加方便。

1。加密算法

RSA公共密钥加密算法(新)用于加密敏感信息。对于加密算法使用的填充方案,我们使用相对更安全的-OAEP()。

- 每个编程语言中OAEP的模式值是:

开发人员应使用微信支付公钥来加密上传中发送的敏感信息。这样,只有用私钥付款的微信才能解密密文,从而确保信息的机密性。

另一方面,微信Pay使用商户证书中的公钥来加密下行链路敏感信息。开发人员应使用商人私钥来解密下行链路敏感信息的密文。

2。加密示例

开发人员应使用微信支付公钥来加密上传中发送的敏感信息。

大多数编程语言都支持RSA公共密钥加密。您可以参考示例,以了解如何使用编程语言实现敏感信息加密。

示例代码

分享