更多精彩技术漫画,尽在码农翻身
后记:看完这篇文章能盗刷别人的支付宝吗?当然不能!那文章中的方案能直接使用吗,当然也不行!中间有太多的细节需要处理,比如hash的结果可能太长,需要截取。再比如手机和服务器端的时间差别较大怎么处理?token怎么更新,余额不足如何处理等等。
其实,漫画中实现离线支付(付款方离线,收款方在线)的关键就是otp, one-time-password,如果你搜一下otp或者totp(基于时间的一次性密码),会发现很多的资料,这是个公认的可靠解决方案,已经被写入国际标准 RFC6238。漫画中有个关键点,把时间戳的整数除以30,就实现了手机端和服务器端计算出来的hash 相同,这样手机端有充裕的时间(30秒)进行支付相关的操作不至于超时。
还有一个问题在离线支付的场景下,离线二维码的生成逻辑是在手机端, 如果安全算法需要升级,那就必须得升级手机端app了。
支付宝到底是怎么实现离线支付的?具体的细节我也不清楚,大体的思路应该差不多,但是细节上应该考虑得更加全面。
这篇漫画改编自楼下小黑哥的投稿《手机没网了,却还能支付,这是什么原理?》,在此致谢。