android 签名模块源码,Daimali.ISV: InterfaceSignatureVerification:WebApi开发的接口数字签名/验签源码,通过MD5,RSA两种方式实现,适用于a...

在开放的API接口中为了保证数据的安全性,我们往往采用数字签名的方式对请求进行加密

功能

Sign签名

应用授权

用户授权

错误参数

全局返回参数说明

1 Success操作成功

100000NULLNull值错误

100001SIGN_ERROR签名验证失败

100002APP_AUTH_ERROR应用授权失败

100003USER_AUTH_ERROR用户授权失败

100004SYSTEM_ERROR系统错误

100006Failed服务器操作失败

参数说明

1.系统参数

[method]:商户要调用的App接口名称

timestamp:时间戳 统一格式yyyyMMddHHmmss

app_key:分配给商户的app_key

version:对应接口的版本号

sign:签名,对 API 调用参数(除sign外)进行 md5/rsa 加密获得。

注:

1.系统参数在每次请求中都是必须的;

2.应用参数根据调用的接口具体传参;

3.app_secret 仅作加密使用, 为了保证数据安全请不要在请求参数中使用.

Sign签名

调用API 时需要对请求参数进行签名验证,签名方式如下:

按照请求参数名称将所有请求参数按照字母先后顺序排序得到:

keyvaluekeyvalue...keyvalue 字符串

如:将arong=1,mrong=2,crong=3 排序为:arong=1, crong=3,mrong=2 然后将参数名和参数值进行拼接得到参数字符串:arong1crong3mrong2。

将app_secret加在参数字符串的头部后进行MD5加密 ,加密后的字符串需大写。即得到签名Sign

用户授权

通过账号和密码登陆授权成功后,系统返回授权Token, Token有效期为30天,每次重新登陆都会生成一个新的Token值.

将Token加入请求的参数中且参与Sign签名

注: 不需要用户登陆的公共模块无需传入Token进行用户授权

通常情况下sign签名验证都是必须的。

请求案例

获取产品列表举例:

方法名称:GetProducts 请求权限:签名验证 参数:pageindex,pagesize 请求方式:get

eg:

按照规则生成签名

参数排序后将app_secret加在字符串头部得到参数字符串:

212821ec2035d78f524a86da13a9dceeapp_key076ba2bcb4a0cb38ce721cc00d27426bpageindex1pagesize10timestamp20150507162828

如上所示 请求所需的4个参数组成的参数字符串,接下来进行MD5加密

得到签名Sign=bcc7c71cf93f9cdbdb88671b701d8a35 记得要大写

这才是正确的签名:Sign=BCC7C71CF93F9CDBDB88671B701D8A35

(可将上面的参数字符串进行MD5加密检测你的加密结果是否一致)

请求链接:

http://api.daimali.com/pro/getproducts?app_key=076ba2bcb4a0cb38ce721cc00d27426b&pageindex=1&pagesize=10&sign=BCC7C71CF93F9CDBDB88671B701D8A35

&timestamp=20150507162828

已知BUG

URL重放攻击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加新功能和模块。 在技术方案上,我们将采用以下几个关键技术: 数据库集成:我们将使用Entity Framework作为ORM(对象关系映射)工具,与数据库进行集成。Entity Framework提供了一种简单且强大的方式来访问和操作数据库,可以大大简化数据访问层的开发工作。 安全性保护:我们将使用ASP.NET提供的身份验证和授权功能,确保只有经过授权的用户可以访问敏感数据和功能。我们还将使用加密技术来保护用户的敏感信息,如密码和支付信息。 缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程模型来处理并发请求和长时间运行的任务。这将提高应用程序的并发能力和响应性能,确保用户在高负载情况下仍然能够流畅地使用应用程序。 性能优化:我们将使用一系列性能优化技术来提高应用程序的性能。这包括使用高效的算法和数据结构、使用缓存技术和数据库索引、进行代码优化和资源管理等。 通过采用这些技术方案,我们的项目将能够提供一个高性能、可扩展和可靠的Web应用程序。我们将遵循最佳的软件开发实践,进行系统测试和性能测试,以确保应用程序的质量和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值