数据信息安全对我们每个人都有很重要的意义,从接触互联网起,我就明白了数据的重要性,我对数据安全的要求极其高,毫不夸张的说我的电话从来没有接过推销和骚扰电话,我本人很讨厌这种事情,对买卖数据和泄露数据的事情比较痛恨,自从做了金融以后,我对数据安全的认识又有了新的认识,接过几家支付通道后,对支付方面的业务有了了解,根据业务需要我开始写支付外放接口,说实话安全设计很让我头痛,最初使用的方式是对报文进行 MD5 加密,并得出一个签名串, 签名串=MD5(原文&密钥) ,如果黑客截取报文,并篡改报文,那么服务端进行验签的时候,将不会通过,因为报文变化了,算出的签名串会改变,那么黑客需要重新计算出签名串,要算出签名串,需要知道加密规则,密钥,这种方式虽然保证了安全,但是存在一个问题,报文是暴露的,黑客并不更改数据,他只是记录保存你暴露的数据,这样也是非常危险的,经过借鉴和学习采用了另一种解决方案, 为保证接口调用过程中报文的完整性,报文使用 MD5 签名算法,为保证接口调用过程中对用户的敏感信息的保护,对涉及用户敏感信息(如账号,名称,手机号等)的域进行 AES 加密 。
采用 MD5(data+"&key="+md5Key)toUpperCase() 方式签名,其中: md5Key 为自己规定的 MD5 签名密钥。最后将获取到的签名串转换为大写。设所有发送或者接收到的数据为集合M,将集合M 内非空参数值的参数按照参数名 ASCII 码从小到大排序( 字典序),得到字符串,使用 URL 键值对的格式( 即 key1=value1&key2=value2 … ) 拼接成字符串 data 。在 data 最后拼接上 key 并对其进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到签名值。
AES 加密模式为 "AES/ECB/PKCS5Padding" ,待加密数据使用 AESKey 加密之后做 Base64 得到加密数据。 AESKey 长度为16 位,由26个字母和数字组成。
博客原文地址: 报文加密和签名设计
微信支付api中的支付密钥Key的功能需要时在微信公众号里申请,查看方法如下:
1首先登陆你的微信公众号或者微信小程序的后台。确认“微信支付”部分的状态是“已申请”。否则按照后台的提示进行申请工作,这个过程一般需要若干个工作日才能完成。
2在你申请的过程中,会收到一封来自微信支付的邮件。邮件名称类似《恭喜您成功通过微信支付商户资料审核》。邮件内容类似下图,图中有三个信息:微信支付商户号、商户平台登录帐号、商户平台登录密码。其中“微信支付商户号”就是我们需要的“商户ID”。
3继续将邮件向下拉,会看到“前往商户平台完成入驻”的按钮,点击按钮,并使用上一步得到的商户平台登录帐号、商户平台登录密码,登陆商户平台网站。如果微信有其他 *** 作提示,按照提示 *** 作完成入驻。
4然后点击页面顶部自己的账号,进入账户中心。
5再点击左侧的API安全,进入API安全管理的页面。如果页面提示你安装 *** 作证书一类的,就按照提示安装,然后重新进入这个页面。
6然后在该页的“API密钥”部分,点击“设置密钥”,可以看到密钥内容,该密钥就是我们需要的“支付Key”。本步 *** 作只能在开发阶段、产品没有上线前 *** 作,产品上线后切忌点击“设置密钥”,否则会影响线上的支付功能。
扩展资料:
api支付接口程序支持网银支付在线交易庞大化网银支付是现代电子商务活动中最典型和最成熟的支付方式,它功能齐全、覆盖范围广,货币流通顺畅,使用网银支付已是在线交易中最普遍最实用的一种方式。支持网银支付,开通了最安全最广泛的交易快捷通道,有了网银支付这一功能,我们的在线交易就得到全面完善,从而就给人们带来多种多样的在线交易方式。支游戏充值不管玩家想给自己的游戏充多少钱,丰富多样的支付方式都可以满足他们的需求。
参考资料:
数字签名包括签名过程和验证签名过程,实现步骤分别为:
1、签名的实现过程
输入:原文、私钥
输出:签名值
(1)将原文做HASH
(2)将HASH用私钥加密,结攻就是签名值
2、验证签名的实现过程
输入:签名值、原文、公钥
输出:是否验证通过
(1)将原文做HASH1
(2)将签名值用公钥解密,取得HASH2
(3)将第1步的HASH1与第2步的HASH2做比较,两个HASH一样就验证通过,否则不通过。
以上就是关于报文加密和签名设计全部的内容,包括:报文加密和签名设计、微信支付api中的支付密钥Key在哪查看、简述数字签名的过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)