Skip to content

本地(Local)端SDK,项目意在帮助小微软件开发者快速对接授权支付(Software sales)流程(本地激活(Local activation),网络验证(Network verification),支付对接(Payment))。

Jianxiong2333/Software-Sales-y-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Software-Sales-y-C

本地(Local)端SDK,项目意在帮助小微软件开发者快速对接授权支付(Software sales)流程(本地激活(Local activation),网络验证(Network verification),支付对接(Payment))。

(一)收集阶段

本地收集机器特征(网卡、硬盘序列号摘要),整理为一个机器码。

(二)加密整理阶段

机器特征码通过RSA公钥加密为一组密文,显示给用户。(Demo中还将唤起浏览器打开填充了密文参数的购买网页)

(三)购买阶段

用户使用密文购买软件,后台校验 RSA 密文完整性。若在购买阶段发现密文损坏,服务器拒绝这一单交易,并要求核对机器码是否复制完全。同理,邮箱及订单号也将进行校验,防止用户填写虚假邮箱或重复为同一机器码购买。

(四)购买成功生成阶段

用户成功购买后,服务器解密数据,得到正确机器码。并且进行入库(可加入偏移,偏移规则需和本地客户端一致),然后再把这组偏移的数据通过MD5生成摘要数据。 (注1:关于客户端反编译获取机器码,请厂商自行加强程序安全性,加壳或者加入反调试处理。注2:要Fork代码自行修改的厂商可以对此步稍微进行加密混淆,如加入Salt 再生成摘要)。然后此摘要数据作为激活码直接发给用户。) 注:此处不进行RSA是为了美观,节约服务器查询性能。并且这组数据已经做了摘要处理,可以无需进行RSA加强过程安全。

(五)本地激活阶段

用户使用摘要信息激活客户端,客户端检查激活码是否是一个合法的RSA数据,也就是能否被客户端的另一套私钥解密。 因为用户拿的摘要信息只是个状态而非真正本地激活码,真正的激活码进行了RSA的公钥加密,需要能被本地解密。 若此处RSA验签失败,则用户有可能使用了假数据,或使用的为激活摘要(MD5激活码),还没有进行过任何的网络验证。 如果用户经过了第六个网络验证步骤,此处应该读取的是本地RSA数据,解密正确则进入功能(详见本地SDK Demo)。

(六)网络验证阶段(加强验证,本地验证通过后将不进入此步)

客户端给服务器发送 Get/Post 验证请求。通过用户在本地填写的激活码、邮箱校验此码是否有购买状态。若校验成功,则向发送RSA加密后的本地激活码存于根目录。 其中线上校验算法阶段需要在完成本地(五)阶段验证不通过时进入(每次打开软件都需要验证第五步)。 注(1):防止被调试跟踪时留下破解特征,验证结束后建议使用重启验证(用户自行结束软件打开),而不是输出激活成功或失败给破解者留下查询破绽。

About

本地(Local)端SDK,项目意在帮助小微软件开发者快速对接授权支付(Software sales)流程(本地激活(Local activation),网络验证(Network verification),支付对接(Payment))。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published