|  |      1imn1      2016-08-19 12:02:08 +08:00 有这么可怕的功能? | 
|  |      2mkeith      2016-08-19 12:03:07 +08:00 类似网银的动态口令 | 
|  |      3vicalloy      2016-08-19 12:03:27 +08:00 via iPhone 你的公交卡支付还不是不用网络 | 
|      4zhanglintc      2016-08-19 12:06:03 +08:00 你说的是那个二维码没有网也能用吗? 我也比较好奇这个. | 
|  |      6jarlyyn      2016-08-19 12:29:22 +08:00 via Android 商家有网...... | 
|      7ashchen      2016-08-19 13:04:18 +08:00 扫码只是输入了账号而已 | 
|  |      8mahone3297      2016-08-19 13:22:25 +08:00 我也有点好奇。之前,我也有一次没开网络,然后支付成功了。 我猜,应该是等你网络开了后,数据再同步。 商家那边是有网络的,他那边肯定会上传数据了。 | 
|  |      9learnshare      2016-08-19 13:26:00 +08:00 离线算法计算就是了,网银的动态口令也不需要网络 | 
|  |      10vicalloy      2016-08-19 13:31:09 +08:00  3 再说两句吧。 这个和你刷银行卡,公交卡是一个原理。 只要能确认你是这张卡的所有者,并不需要你上网,商家肯定得要上网。 手机上的二维码应当是采用非对称,将你的账号进行加密(应当还包含时间之类的信息),服务器进行解密取出你的账号。 每个人的密钥都不一样,因此无法冒充他人。 | 
|  |      12sujin190      2016-08-19 13:49:59 +08:00 或者简单的在有网的时候提前更新一个和账号相关支付密钥也可以啊,然后支付的时候用这个密钥签名或加密都行,总不可能你一直没网吧,有网的时候刷新一下这个密钥就行了 | 
|      13just4test      2016-08-19 14:02:55 +08:00  1 @vicalloy  @imn1 和公交卡不一样。 支付宝和动态口令小硬件 /网易将军令是同样原理。设备内有一个 key ,该 key 根据当前时间生成验证码。刷卡机扫描二维码之后把验证码传给支付宝,支付宝就从对应的账户里刷钱。 公交卡是双端离线支付。无论卡还是公交刷卡机都是离线的。不过地铁刷卡机是在线的。公交卡本质是基于证书的。发卡公司有根证书,为每个公交卡颁发子证书。证书还会更新,在地铁刷卡的时候就顺便更新了。所以如果长时间不刷卡,卡还会过期。公交卡内存储了账号余额,公交刷卡时余额也会更新。所以如果破解了公交卡,可以伪造余额免费坐公交,但无法伪造余额在超市买东西,因为超市的刷卡机是在线的。另外,干这种事儿马上会被发现,卡的证书会被吊销,还会有条子叔叔根据你坐公交的路线和影像记录抓住你。 | 
|      14ilikekindle      2016-08-19 15:28:45 +08:00 via Android 不能用公交卡类比,原理根本不一样。 | 
|  |      15lincanbin      2016-08-19 16:16:23 +08:00 服务器给了一个离线密钥,本地储存这个密钥,并加入时间戳,通过一个哈希算法得到一个一次性、会过期的 token ,这个可以是离线的。 | 
|      16csdreamdong      2016-08-19 16:26:39 +08:00 没用过,但我觉得 商家有网,我没网,我扫了二维码,商家怎么知道它的二维码被扫了呢? | 
|  |      17virusdefender      2016-08-19 16:29:56 +08:00 和两步验证一个道理 | 
|      18csdreamdong      2016-08-19 16:30:11 +08:00 如果是商家扫我的码,那可以理解。 | 
|  |      19arens      2016-08-19 16:33:53 +08:00 @csdreamdong 实际上都是商家和服务端之间的交互,你扫描二维码只是做了“我确认支付”行为 | 
|      20csdreamdong      2016-08-19 16:44:49 +08:00 @arens 我没网。。我通过什么方式告诉商家,‘我确认支付’了。 | 
|  |      22des      2016-08-19 16:51:26 +08:00 via Android 搜了一下是用声波传输数据的。 不过嘛,可能有黑产会盯上。 | 
|  |      23Tony2ee      2016-08-19 17:09:39 +08:00 动态口令牌而已  你手机上显示的码只是为了告诉商家 /支付宝“我是谁”, 至于收款商户信息、常用地点检验、金额检验等等操作都是通过商家联网与支付宝对接以后在云端完成的。 离线扫码支付实际上是个很不错的功能的,有效解决了许多商场的超市在地下信号差导致交易失败的问题,有时候地下的超市的无线 POS 机由于信号原因无法付款的时候支付宝是个很好的解决方案 | 
|  |      25SPACELAN      2016-08-19 18:06:34 +08:00 公司里用的 rsa token 不也是一样离线验证么 | 
|  |      26SourceMan      2016-08-19 18:08:27 +08:00 动态口令咯 | 
|  |      27ohhe      2016-08-19 18:10:41 +08:00 你的哪个卡可以上网?不都是可以支付 | 
|  |      28ohhe      2016-08-19 18:18:17 +08:00 所以两方只要一方可以上网就可以了 | 
|  |      29qzy168      2016-08-19 18:30:12 +08:00 商家刷的时候,又不需要你输入密码确定。 | 
|      31cmxz      2016-08-19 19:03:23 +08:00 via Android @csdreamdong 你的二维码亮出来让商家扫就是你确认支付的行为 | 
|      32JJaicmkmy      2016-08-19 19:07:19 +08:00 @csdreamdong 如果是商家出示二维码,你来扫这种是必须联网的。但是如果是你出示二维码,商家来扫这种是可以离线的。 | 
|  |      33zhicheng      2016-08-19 19:59:53 +08:00 via Android 那个二维码和信用卡的磁条信息差不多,再加上时间戳,随机数和签名防伪造。公交卡要复杂一些。 | 
|  |      34justina25      2016-08-20 00:10:17 +08:00 内部人士。。很高兴有人讨论这个问题。。基本说的都对的。 提个小问题大家思考下, RSA 这种 Token 都是基于时间的,换句话动态令牌都是隔一分钟刷新一次 key 值的。支付宝的付款二维码在离线情况下除了每分钟刷新之外,还可以手动刷新二维码,这是怎么做到的? (可以掏出手机看下,点那个每分钟自动刷新的地方也可以是手动刷新) | 
|  |      35iyangyuan      2016-08-20 06:09:02 +08:00 via iPhone 商家有网 | 
|  |      37justina25      2016-08-22 10:51:05 +08:00 @cheese 这样暂不说系统成本很大。。准确度也很有问题, 1 分钟一变的话算上时间窗口可以允许 3 分钟之内的时间误差。精确到秒的话你只要时间差 3 秒就验证不通过了。。 | 
|      38CYKun      2016-08-22 12:26:15 +08:00 @justina25 用序列号?客户端每次生成 token 时把序号加 1 ,服务器收到 token 后比较其中的序号和用户最后一次交易的序号,前者比后者大说明是有效 token 。 | 
|  |      39arens      2016-08-29 11:08:38 +08:00 |