azl397985856 / fe-interview

宇宙最强的前端面试指南 (https://lucifer.ren/fe-interview)
Apache License 2.0
2.84k stars 260 forks source link

【每日一题】- 2019-12-20 - 支付宝,微信在没网络的情况下还能支付,是如何实现的?需要什么支持? #86

Closed azl397985856 closed 4 years ago

azl397985856 commented 4 years ago

OTP

以下解释来自wikipedia https://zh.wikipedia.org/wiki/%E4%B8%80%E6%AC%A1%E6%80%A7%E5%AF%86%E7%A2%BC

OTP(one-time-password)又称一次性密码,又称动态密码或单次有效密码,是指计算机系统或其他数字设备上只能使用一次的密码,有效期为只有一次登录会话或交易。OTP 避免了一些与传统基于(静态)密码认证相关系的缺点;一些实现还纳入了双因素认证,确保单次有效密码需要访问一个人有的某件事物(如内置 OTP 计算机的小钥匙挂件设备)以及一个人知道的某件事物(如 PIN)。

离线流程

离线支付的大体过程:

上述对比的逻辑原理是动态口令,其实很多软件都在使用。其是根据专门的算法在每隔一段时间生成一个口令。通过特定的事件次序及相同的token作为输入,在HASH算法中获得相同密码。

总结

  1. 离线支付是可以实现的,并且不难
  2. 但是想做到安全就很难。 如果客户端算法被攻破,那么是不是就意味者你可以刷别人的钱?