小问题2:转载 matrix67数学笔记
假如你获得了500元钱,你所得到的效用就用A点来表示;假如你获得了1500元,你所得到的效用就在B点。因此,工作一带给你的平均效用就用A和B的中点C来表示。但是,如果直接就给你1000元,你将会得到一个大于C的效用D。这表明,直接选择工作二所带来的效用要高于工作一带给你的平均效用,自然人们都会选择工作二了。因此,经济学中有这样一个定理:如果一个人认为自己收入的边际效用是递减的,那么这个人就是一个风险规避者。对于期望收入相同的两件事来说,他愿意去做风险更小的那一件。事实上,风险规避者甚至有可能通过减少自己的收入来避免可能的风险。在图2中我们可以看到,如果工作二所提供的稳定收入值高于元,风险规避者就会毫不犹豫地选择工作二,即使它的收入低于工作一的平均收入。也就是说,一个风险规避者愿意花费元钱来避免他可能面对的风险。
6. 消费者承担消费税真的吃亏了吗?其实,我本来对经济学不感兴趣。一次偶然的机会,我在朋友的寝室里看到了传说中经济学最经典的教材之一——曼昆(Mankiw)的《经济学原理》。好奇心驱使我随手翻开了一页,读了一小段与征税有关的讲义,于是立即爱上了经济学,并且果断选修了微观经济学的课程。这是我大学期间收获最大的课程之一。可能是因为个人的经历吧,我觉得征税问题特别适合用作微观经济学的入门话题。因此,我准备在这里复述一下《经济学原理》中的这段讲义,希望从未接触过经济学的数学爱好者们能够喜欢上这门学问。我打算偷一个小懒,直接用原书上的例子——冰淇淋。与众多其他市场一样,冰淇淋市场的需求曲线与供给曲线的走向是正好相反的。当冰淇淋的价格增加时,越来越多的消费者觉得吃冰淇淋的享受不值这么多钱,从而退出了消费市场,于是市场的总需求量越来越低。反之,冰淇淋的价格越低,能够提供冰淇淋的生产商也越少,因为越来越多的卖者认为他们没有赚头,从而退出市场竞争。两条曲线有一个交点,这个交点叫做市场均衡。对应的价格叫做市场均衡价格,对应的数量则叫做均衡数量(见图1)。在均衡价格下,买者的需求与卖者的供给数量正好相当,市场上的每个人都得到了满足。若市场价不等于均衡价格时,供给数量和需求数量将不再平衡;供不应求将导致价格上涨,供大于求则导致价格下跌,最终还是会自发地调整到均衡价格。
现在呢,有趣的事情发生了。假设有一个地方具有相当浓厚的冰淇淋文化,该地政府打算举办一个年度冰淇淋节。为了筹到这项活动的经费,政府决定:卖方每卖出一个冰淇淋,政府就向卖者征收0.5美元的税。于是,各大冰淇淋制造商上街游行,宣称这个税应该由买者支付。而消费者协会则声援政府,坚持认为这部分税应该由冰淇淋生产商支付。两大游说集团吵成一团。为此,我们不妨仔细研究一下,如果这部分税由消费者来承担的话,会发生什么奇特的事情。假设政府向消费者征税。消费者自然会觉得自己亏大了:每买一个冰淇淋还要多付0.5美元。消费者并不关心市场价格,只关心自己的实际支出,因此,如果原本我能接受2美元的冰淇淋,现在我只愿意接受1.5美元的了,因为我还得额外支付0.5美元的税。换句话说,需求曲线向下移动了0.5个单位(见图2)。新的需求曲线与供给曲线产生了新的交点,市场的均衡数量变少了,市场均衡价格也降低了。假如说,没有征税时市场均衡价格为3.0美元,现在的市场均衡价格为2.8美元。但消费者要交0.5美元的税,因此消费者支付的实际价格是3.3美元。我们可以看到,政府若向消费者征税,则卖方损失了0.2美元的收益,买方则多付出了0.3美元。这0.5美元的税实际上是由双方共同承担的。究竟哪一边分担得多些是由两条线的斜率决定的。
20世纪美国曾经大规模地向消费者征收奢侈品消费税。因为政府觉得,买奢侈品的都是富人,因此对奢侈品征收消费税其实是非常巧妙地变相向富人多征一些税。殊不知,奢侈品不是生活必需品,只要价格抬高一点,便有大量的消费者退出市场,反正有的是地方花钱,买点房子啊,出去旅游啊,要实在得多。反过来,奢侈品的供给曲线则非常地陡,即使价格变化很大,产量变化仍然不大,毕竟生产制造奢侈品需要用很多时间、人力和设施,这些既定因素使得生产商无法快速应对市场需求变化。可见,需求曲线比供给曲线要“平”得多。结果呢,明明是向买方征税,税反而几乎都由生产者承担;而这些生产者并不是富人,奢侈品税的重担落在了中产阶级身上。政府的决策适得其反。别着急,冰淇淋的故事还没讲完呢。我们再来看看,如果果真向生产商征税,结果又如何呢?显然,生产者必然会觉得自己亏了,原本可以卖2美元,现在卖了后只能得1.5美元了。因此,为了弥补这0.5美元的损失,卖方只接受比原来高0.5美元的市场价格。其结果是,供给曲线上升了0.5个单位(见图3),从而使得市场均衡价格从3.0美元增加到了3.3美元。但这3.3美元并不全部归卖方,卖方要交给政府0.5美元的税,因此事实上卖方只能得到2.8美元。结果呢,向生产者征税的效果与向消费者征税的效果完全一样。
搞了半天,最开始两边在那里拼了命地争论,结果却完全没有必要——不管向谁征税,结果都是一样的。7. 价格里的阴谋很多常见的商品,比如大米和白菜等,它们的买家和卖家都很多,产品本身的差异也不大。因此,个人行为是无法改变整个市场的,价格完全由整个市场的供求决定。这种市场叫做完全竞争市场。在完全竞争市场中,卖家自己是无法操纵价格的。还有一些产品就不同了。比如铁路和电力等市场,产品的提供商通常只有一个企业,这个企业就能随意调整产品的价格。电信和航空等产业也不是随便哪个人就可以白手起家说干就干的,新企业的参与和旧企业的退出都需要耗费巨大的成本,这也决定了商品的提供商必然不会很多,企业有自主定价的空间;还有衣服、手机和书报等商品,不同商品之间的差异很大,每一种产品都有它的独特性,因此这些行业也不是完全竞争,生产商也有自己定价的权利。由此引发了一个有趣的话题——如何制定价格才能让生产商的利益达到最大呢?这里有一个两难的问题:价格定得太低,赚不到钱;价格定得太高,没人买。这是传统定价策略的一个巨大的缺陷:不管你把价格定到多少,你都觉得不好——价格再高点或许就能从某些买家手里赚到更多,价格再低点或许就能赢来一些新的买家。要是有办法给愿意高价购买的人卖贵点,给只想便宜买的人卖便宜点的话就好了。这种放弃统一定价,为不同消费者制定不同价格的策略就叫做“价格歧视”。对于商家来说,最完美的情况就是拥有看透每个买家的读心术,能知晓每个人愿意支付的最高价格,并且抵着这个价格卖给他。这种为每个人“量身定价”的理想情况被称为“一级价格歧视”。在现实生活中,一级价格歧视显然是不大可能发生的。不过有一些例子却非常接近一级价格歧视。比方说小商铺中的讨价还价,最后的成交价格因人而异,这就有点一级价格歧视的味道。聪明的卖家在报价前会先问“你觉得它值多少钱”,目的就在于摸清你的心理价位。对于一些不大会砍价的人,回答卖家的这个问题几乎就是彻底暴露自己愿意支付的最高价格,于是市场上又诞生了一个悲剧的消费者。和每个消费者讨价还价虽然很接近梦想中的一级价格歧视,但这并不能在每个行业里都办到。除了“明码标价”等政策上的原因之外,有时候还有一些更直接的原因。比方说电信业,话费和流量费就只能统一定价,与每个消费者都搞讨价还价根本不可能实施,况且消费者众多,费用信息是完全透明的。因此,商家还得绞尽脑汁想点儿别的办法来区分不同档次的消费者才行。我们就用数据流量费来举例子吧。在GPRS服务出现之初,人们用GPRS可以干的事情并不多,因此我们假设消费者的需求都差不多。每个月30MB的流量对于数据流量的消费者来说已经足够了,再多了也用不上。但是,这30MB的流量在消费者心中的价值并不一样。对于一个饿汉来说,第一个烧饼的价值显然比第七个烧饼的价值更高。对于消费者来说,每多1MB流量所带来的价值也是递减的。我们假设,为了得到头一兆的流量消费者愿意出3元钱,但消费者只愿意再花2.9元获得额外的一兆,第三兆则只值2.8元钱,等等。我们把消费者对每单位流量的估价用图1所示的柱状图表示,所有竖条面积的总和就是这30MB的流量在消费者心目中的总价。
如图2所示,我们近似地用一条斜线来反应流量和价格之间的关系,斜线下方的三角形面积就可以看作是一个消费者为了得到30MB愿意支付的总价——约45元。
对于电信公司来说,怎样定价才能赚到更多的钱呢?和上面提到的定价困境一样,流量单价无论怎么设定都不完美。比方说,我们规定每兆的单价为1元,于是消费者就会打起如意算盘,算出一个让自己赚得最多的购买数量。结果就是,消费者只愿意购买20MB,如图3所示,因为此时自己的获利减去实际的支出达到最大,每再多买一点就会又亏一点。这样的话,假设提供数据服务的成本为0,服务提供商也只能赚到一个小矩形区域这么多钱(20元),斜线下方的其他区域都被放掉了。让这个矩形面积达到最大的方法是把单价定到1.5元,这样可以从每个消费者手中赚22.5元钱,但获得的利润仍然只有斜线下方面积的1/2。有没有办法榨干消费者的每一分钱呢?有!那就是放弃按单价收费的办法,直接推出一个45元30MB的套餐。由于每个消费者购买30MB的流量所愿意支付的最高价格恰好也就是45元,因此消费者将接受这个价格,于是服务提供商将赚到斜线下方的所有面积。取消按单价收费的办法后,消费者将别无选择,只要套餐价格没超过带给他的价值,他都会去买。为什么电信业务里总是有那么多套餐,秘密也就在这里了。
现在,有趣的问题来了。假设数据流量市场上突然出现了一类新的消费者。或许是由于这类消费者用GPRS比较频繁,或许是由于他们用GPRS的方式比较费流量,总之40MB才能满足他们的需求。他们对每单位流量的价值估算也是随着流量增多而递减的。他们愿意为头一兆流量花费4元钱,但只愿意花3.9元钱购买第二兆,依此类推。这样的话,市场上就出现了两种消费愿望不同的消费者,我们不妨把他们分别叫做“低端消费者”和“高端消费者”。若只推出一个30MB套餐,则只能赚到两个面积 的钱,荒废了高端消费者的巨大潜力;若只推出40MB套餐,则只能赚到面积的钱,完全无视了低端消费者的购买力。为了兼顾两类消费者,从消费者身上榨取出最多的钱,就需要放弃统一定价策略,并同时推出两种套餐:45元钱30MB,以及80元钱40MB。如图4所示,低端消费者愿意用面积所代表的钱数去购买30MB,高端消费者愿意用面积所代表的钱数购买40MB,因此他们都能接受为自己准备的套餐,以愿意支付的最高价格购买数据服务。这就是鲜活的价格歧视:给不同的消费者制定不同的价格。但此时,我们发现了一个之前不曾遇到过的问题:高端消费者可能会发现,买前一种套餐似乎更划得来——对于高端消费者来说,30MB的价值等于面积加上面积 ,但现在只需要用面积 就能拿到这30MB,又何乐而不为呢?另外的10MB流量对高端消费者的价值只相当于区域的面积,却需要在低端套餐的基础上再加上面积的钱才买得到,明显亏了很多。这就是实现价格歧视真正最困难的地方:既然不能靠讨价还价等手段区别消费者,在一个开放的市场环境中,如何阻止高端消费者模仿低端消费者去消费低端套餐呢?
为了让高端消费者自动去选择高端套餐,我们必须要让高端消费者觉得,购买高端套餐要比购买低端套餐更划得来。因此,我们想到以下这种改进的定价方式。低端套餐是面积购买30MB,高端套餐是面积 购买40MB。高端消费者会发现,在购买了30MB的流量之后,再获得额外的10MB对他而言的价值相当于面积,恰好也就是购买40MB套餐的额外付出。因此,高端消费者会觉得多花一个面积的金额是值得的,从而主动去选择后面那一种套餐。这样,服务提供商将从两类消费者中赚取到的总面积为。这种套餐定价虽然不能赚到消费者愿意支付的每一分钱,但它能自动把两类消费者区分开来,让每类消费者都会自动选择适合他的套餐,实现了消费者的区别对待,从而赚到比统一定价更多的钱。我们把这种给不同量的商品制定不同的价格,得以让高端消费者自动选择高价位商品的定价策略叫做“二级价格歧视”。这样的例子在生活中很多见。“一件30元两件50元”和“量大从优”的价格策略本质上都是二级价格歧视的典型例子。有趣的是,上面这种套餐设置还不是最好的,它还能继续改进。由于高端消费者愿意花费的钱更多一些,我们可以想办法拉大高端套餐和低端套餐的差距,从而向高端消费者收取更高的费用。例如,按照图5设置两个套餐,面积购买 兆,面积 购买40MB。低端消费者会发现他购买前 兆愿意支付的钱正好也就是面积,因此愿意接受前一个套餐;高端消费者发现把流量扩充到40MB愿意多支付的钱正好也就是面积,因此会购买40MB套餐。这时,服务提供商赚到的为一个 的面积,加上 的面积,和原来相比少赚了一个 的面积,但多赚到了一个的面积。由于区域 要比区域 大一些,因此这个套餐比原来更好。
到底取多少才能达到最优呢?注意,只要 区域的左边界比 区域的左边界更短,把的值减小一点总能保证面积 的变化量大于面积 的变化量。当 时, 、两块区域的左边界一样长了,低端套餐的低端化也就到了极限。因此,如图6所示,在这个例子中,最终的二级价格歧视策略是设定20MB和40MB两个套餐,它们的价格分别为面积和面积 所代表的钱数。
这里我们看到了一个有趣的现象:让低端产品更低端,反而会增大生产商的收益。只需要注意到例子中的横轴不一定总是代表商品的数量,它也可以用来表示商品的质量,我们就会发现二级价格歧视理论可以解释生活中很多奇怪的现象。联邦快递服务表面上有次日到达、隔日到达、普通到达三种,但显然普通到达的快递并不是真的需要更长的运输时间才能到。在同一天寄出的快递,即使选用了不同的服务,它们显然也都是在同一天到的。只是,隔日到达的快递会在仓库里多囤一天,普通到达的快递则会被搁置更久。有人会想,这不是有毛病吗?为什么明明今天就能送到的东西非要明天才送到?事实上,这种看似很不合理的做法正是前面所说的二级价格歧视。快递公司人为地把快递服务分成了三种不同的档次,有意设置低端服务,从而让消费者根据自己的消费水平对号入座。轮船的四等舱又脏又臭,很多乘客都抱怨,明明只需要很小的成本就能稍微改善一下四等舱的环境,为什么不这么做呢?其实,这也是价格歧视的需要。为了区分出不同档次的产品,商家有意设置了一个低端消费品,供那些支付意愿较低的人购买。二级价格歧视还有一些更匪夷所思的例子。为了实现价格歧视,产品研发部门有时会面对一些看似不可理喻的设计需求——IBM研发打印机时曾经专门研发过一种可以减慢打印速度的部件。超市新进一批货物后,往往会举办特卖会贱价销售运输过程中有所损坏的商品。每次运输中真的都会产生那么多不小心受损的东西吗?有人惊奇地发现,这些号称是运输中撞伤的商品竟然都是到货之后商家自己用锤子砸坏的!有了价格歧视理论,生活中的很多怪现象都有了合理的解释。除了用不同档次的商品来区分消费者,有时候,商家还有其他办法直接区分出消费水平不同的买家。如果商家能够成功区别出不同档次的消费者,无需拐弯抹角,直接就给他们提供不同的价格,这就叫做“三级价格歧视”。游乐园门票、电影票和火车票等商品不大能分出个一等二等,因此二级价格歧视在这儿没有什么用武之地。不过,商家仍然能够想出区别定价的奇招:持有学生证可以享受优惠。由于学生群体消费水平较低,而借助学生证又能轻易将这类消费者区别开来,因此商家可以直接给这一类人提供优惠价,从而既能保证榨取高端消费人群,又不至于损失了低端消费人群。同一件商品在不同省市的价格不同,高速公路对不同车型收取不同的费用,这些都是最典型的三级价格歧视。当然,还有一些非典型的、很隐蔽的三级价格歧视。商家经常在暗中布置好一盘棋,根据你的行为来分辨你的消费档次。在很多商场、餐厅或者酒店,获取更低折扣的办法竟然就是简单地问一句“打折吗”。别小看这个小细节,问不问这一句话很大程度上就反映出了买家的消费水平。按照这个行为细节把消费者分为两个档次,给他们提供不同的价格,兼顾不同消费人群,这就是相当隐蔽的三级价格歧视策略。电子商务网站也能根据用户操作区别出不同的消费人群。一些阴险狡诈的网站可能会在用户点击“按价格从高到低排序”后有意给出更高的价格,目的就是从高端消费者那里赚到更多的钱。还有一些更隐蔽的三级价格歧视。优惠券的印刷和发放都需要耗费不少的成本,那麦当劳为什么不直接在餐厅提供折扣,而偏偏要用优惠券的方式提供折扣呢?其实,提供优惠券就是一个非常隐蔽的三级价格歧视。据说,拿到优惠券的人当中,只有30%的人会有意把它留下来供以后使用,另外70%的人不是放着放着就弄丢了,就是放着放着就过期了,甚至有很多人拿到优惠券就直接扔掉了。根据这一点,消费者就自动分为了两个群体。这样,商家便能从高端消费者手中榨取到更多的钱,并为那些对价格很敏感的低端消费者提供优惠价。在国外买很多电子产品时,有一种价格优惠策略叫做“邮寄回扣”,就是说买完东西后把收据、反馈卡、回扣申请表等物品整理好并寄回厂家,厂家就会以支票的形式返赠多少多少钱。返赠的金额少则几十元,多则一百多元,对消费者来说无疑是一个巨大的诱惑。但事实上,申请回扣是一件很麻烦的事情,需要寄回厂家的东西少了任何一样都不行。因此,回了家后真正认真整理回扣申请资料的人并不多,很多人要不就是嫌手续麻烦不弄了,要不就是放着放着就忘了。只有对价格特别敏感,真正在乎回扣的消费者才会花精力去申请回扣。高端消费者和低端消费者就这样区别开了。为了榨干消费者的每一分钱,除了价格歧视以外,商家还想出了各种招数。一种看上去似乎与此无关的定价策略叫做“两部分定价”。游乐园、酒吧之类的地方广泛存在两部分定价的现象,即在消费者消费之前必须先一次性支付一定数量的“入场费”,入场之后才可以按单价支付你所消费的商品。为什么商家要把费用分成这么两层呢?其实,根本目的还是在于从消费者手中赚到更多的钱。为了说明为什么两部分定价能赚到更多,我们不妨以游乐园来举例。为了简便起见,我们假设游乐园里只有一个游乐项目,比方说过山车。去游乐园的人只有一个目的,就是去玩过山车。不过,过山车老玩也没意思,随着玩的次数增加,游客获得的“爽感”将逐渐减小,具体地说,第次坐过山车只能给他带来相当于 元的价值(这也就是他第次乘坐过山车愿意支付的最高价格)。我们再假设,运营过山车的成本是平均每人次60元。那么,游乐园应该怎样定价才能从消费者手中赚到最多的钱呢?首先注意到,传统定价策略依旧有前面已经讨论过的缺陷——无论怎么也不能赚到消费者愿意支付的全部金额。例如,把价格定到,则消费者只愿意玩 次过山车(再玩的话还能获得的收益就不抵还需支付的费用了),他需要支付的就是图7中面积 所代表的金额。而面积 是运行次过山车的成本,因此商家最终只能赚到一个面积 的钱。而事实上,为了坐这 次过山车,消费者愿意支付的价格是面积 再加上上方的一个小三角形 ,那块面积怎么能白白便宜了消费者呢?于是,商家想到,何不把那块小三角形面积以“门票”的形式一次性收入囊中呢?
于是,我们有了收费的新方法:坐一次过山车的单价仍然是 ,但不管你坐多少次,你都需要事先缴纳面积那么多钱作为门票。这样,你总共支付的价格就是面积 ,除去成本 后,商家赚到的部分就是面积 。这就比刚才的定价方法多赚了一个三角形的面积。然而,这种方法仍然不是最好的。为了继续赚到区域右边的那块面积,商家还可以降低过山车单价,让消费者再多坐几次过山车。最佳的两部分定价方案就是,把过山车的单价定得和成本一样,然后直接收取图8中成本线以上的整个大三角形面积的门票费。这样,消费者愿意坐 次过山车,总共支付 的钱,除去成本后商家净赚 ,理论上把消费者榨取得一干二净。
细心观察你会发现,在生活中,两部分定价的例子还有很多。会员入会费、信用卡年费、手机月租费都属于两部分定价的典型例子。另一个常见的定价技巧叫做捆绑销售。例如,购买电视频道时,你会发现很多电视频道都不单卖,你必须要和其他的频道一起买才行。这就有些奇怪了:为什么不简单地按需求给每个频道订个价,而偏要费尽周折设计那么多频道包呢?难道打包卖会赚得更多一些吗?事实上还真是这样——捆绑销售会使得商家获得更高的利润。不论商家的行为如何诡异,其动机都是唯一的——赚尽可能多的钱。为了解释这一现象,我们不妨从最简单的情况说起。假设有甲和乙两个人,以及A和B两个频道。甲愿意以120元购买A频道,愿意以30元购买B频道;乙只愿意以100元购买A频道,却愿意用40元购买B频道。如果对A和B两个频道分别定价,则显然应该为A频道定价100元,给B频道定价30元,此时商家收入260元。但若把A和B两个频道捆绑在一起销售,则可以给这个包定价140元,这能让商家收入280元。可见,捆绑销售确实能够给商家带来更多的利润。但捆绑销售不见得总有效。如果把上面的数据稍稍更改一下,甲对两个频道的估值分别为120和40,乙对两个频道的估值分别为100和30,则单独定价和捆绑销售都只能收入260元,这之间并无差异。由此可见,不是随便两样东西捆绑起来就能带给商家更多利润的,这背后还隐藏有一些条件。仔细观察你会发现核心问题所在——若捆绑销售能让商家赚更多,则一定是出现了这样的情况:这些频道的最低估价来自不同的买家,即买家对频道的评价不能是“都很好”或者“都不好”,对两个频道的评价呈现负相关。换句话说,对于某一系列商品,若消费者往往只偏爱其中一个,并且不同人的偏爱不同,则捆绑销售可以带来更多的利润。最经典的例子就是微软办公套件——为什么要把Word、Excel、PowerPoint捆绑销售,而不单卖呢?原因就在于,一个普通消费者并不会用到里面所有的软件,不同人对这几款软件的评价不同。虽然很多人觉得Word是最常用的,但财务人员会觉得Excel更加有用,而教师则觉得PowerPoint的价值更高。在这种情形下,捆绑销售将让商家赚更多的钱。重庆数字电视的特选节目包包含FOXTV、世界地理、发现之旅、第一剧场、风云音乐、英语辅导、风云足球和老故事这8个频道,频道内容覆盖面很宽,基本上满足上述条件。影剧院和游乐园的套票,颜色和款式不同但不单卖的成套商品,都是典型的捆绑销售。细心观察,你会发现生活中还有很多令人匪夷所思的定价策略,其实它们都是有企图有预谋的。维基百科上的“pricingstrategies”条目中列举了20多种定价策略。如果每一个都用微观经济学来解释一番的话,估计又能写成一本书了。不过,上面这些例子就已经足以印证那句老话了:买的不如卖的精。8. 公用品的悲剧公用品悲剧是微观经济学中又一个非常有趣的话题。从一些简单的假设出发,通过一系列数学推导,我们能够得出一些乍看之下很不可思议的结论。利用这个结论,生活中很多反常的现象都有了合理的解释。一个经典的公用品悲剧实例就是过度放牧的问题。同样一块牧场,如果为私人所有,牧场主将会非常合理地规划牧场,让放牧数量达到一个理论上的最优值;但是,如果这是一块公共牧场,则所有人都会争抢放牧,从而导致放牧数量远远大于最优值,最终每个人都得不到什么好处。可能有人会觉得这个现象并不难理解——既然是一块无人管制任人使用的公共牧场,人人都能在这里放牧,过度放牧自然就会不可避免地出现了。但是,仔细一想你会发现这个解释是有问题的:每一个来牧场放牧的人,自己心里也都知道,过度放牧对整个大局是不利的,自己的收益也会随之降低。既然人人都知道过度放牧不好,为什么最后来放牧的人还是越来越多呢?私有牧场和公共牧场的区别到底在哪儿?我们可以借助数学工具来分析这个问题。为了用数字来说明这一情况,我们首先做一些假设。我们假定牧场只放奶牛,收益也全部来自于牛奶供应。显然,牧场的总收益与放牧数量之间的关系是一个单峰函数——牧场上没有牛时总收益为0,牛的数量超过牧场的最大容量后总收益也为0,在这之间一定存在一个平衡点使得总收益达到最大。为此,我们无妨假设总收益与放牛数量 满足 的关系,即当牧场上的牛数为0或者为100时整个牧场都不会有任何收益,而时牧场的总收益将会达到最大。我们再假设,购买一头牛的成本为,拥有奶牛之后放牧的成本则忽略不计。接下来,我们将求出该牧场在公有和私有两种情况下最终达到的放牧数量,大家将会看到开放牧场后确实将导致放牧数量远远超过最佳水平。如果这是一块私有牧场,牧场主会选择放多少头牛呢?很多人可能会脱口而出,当然是50头牛,因为时收益达到最大值。但请注意,牧场主想要最大化的并不是他的收入,而是减去成本后所得的利润 。对这个式子求导,就能得到利润最大化的条件:。解出这个式子中的 ,就得到牧场中的最佳牛数 。从另一个角度来看,上述结论也是很显然的: 恰好就是 的导数,是增加第 头牛给人带来的收入增加量。如果这个增加量比大,那么买入一头新的牛显然划算;什么时候这个增加量比 小了,再买牛来放就要亏本了。因此,临界点正好就是牛的数量达到最优的时候。但是,一旦整个牧场变为公有,上述推理就不对了,因为单个放牧人并不关心整个牧场的利润,只在乎自己的盈亏。为了简便起见,我们假设牧场上有个放牧人,每个人都只放1头牛。那么,牧场的总收入将为 ,每个人得到的收入为 。因此,当牧场上有头牛时,对这块蛋糕垂涎已久的人会发现,他作为第 个放牧人进入牧场后,能够分得的收入为 ,只要这个值比大,这样做就是值得的。随着进入牧场的人数增多,新加入的放牧人会发现他所能赚到的越来越少。最终当时,便不会再有人想要进入该牧场了。此时的总体情况惨不忍睹——每个放牧人所得的收入都是 ,可以说是一分钱也赚不到。
为什么同样都是为了自己的利益最大化,公有牧场和私有牧场的差别那么大呢?根本原因就在于,在公有牧场中,每个人都能自由地进出该牧场,每个人都拥有在牧场放牧的权利。只要一个新来的放牧人发现自己有钱赚,他就会选择买牛放牧,而并不关心这样做其实会导致每个已经在牧场上的放牧人都要少赚一些。但是,选择在这里放牧是这个放牧人的权利,原来的放牧人没有理由驱逐他。随着新人不断加入,每个人都会赚得越来越少,最后大家的利润就将趋于0,悲剧也就产生了。不仅仅是公共牧场,事实上“公用品悲剧”发生在几乎所有的公共资源上。例如,人人都知道污染环境损人损己,最后弄得每个人都活不下去,但为什么大家仍然亡了命似地破坏自然资源呢?原因就在于,对于某一个企业来说,直接排放污水废气给它带来了一个正的收益,但这却给其他的每个企业都造成了损失。每个决定要污染环境的企业都这么想,这样做的人便会越来越多,整个社会的损失也就越来越大。公用品悲剧还会涉及很多非自然资源的公用品。例如,每个人都知道公交车挤着不舒服,但为什么最终车上还是这么挤呢?这就是因为,对于每个车下面的人来说,只要能上车,他就已经得到了好处,完全无视这一举措会使车上的每个人都受到一点损失。每个车下的人都这样想,悲剧也就发生了。公用品悲剧的理论还有很多更奇怪的应用。很多时候,交通堵塞的原因是前方路段发生车祸,但事实上前方发生的仅仅是某辆车撞上了护栏,车祸根本没有挡住道路。为什么最终还是堵车了呢?原来,每辆开到车祸现场的车,都会减慢速度看看热闹,甚至停下来掏出手机照下这一“杰作”。这样做虽然满足了自己的好奇心,却让后面的每一辆车都多堵上好几秒。因此大家往往会发现这样一个有趣的现象:车祸越离奇,交通堵塞越厉害。另一个经典而有趣的应用是,为什么在餐桌上,实行AA制的总消费要比某一个人请客的总消费高出许多。原因就在于,在实行AA制后,每个点菜的人都会想,原来需要一百多块钱才能吃到的美味,这次只需要花二三十块钱便能享受到了。这样,虽然自己得到了满足,却让每个人都为你多付了一些钱。9. 密码学与协议说到“密码学”,大多数人的第一念头或许是摩尔斯(Morse)电码、凯撒(Ceasar)移位密码以及同音替换密码之类的东西。这些东西在各类小说中都已是老面孔了,“字母e在英文中出现的频率最高”等基本的破密码方法已经是耳熟能详了。某次和网友云风聊了一下,突然领会到了密码学的真谛。密码学关注更多的并不是加密解密的各种数学算法,而是在已有数学算法上如何实现各种安全需求。防止消息泄露只是众多安全问题中的冰山一角,而这个问题本身又有很多复杂的变化。谈到“消息泄露”时,我们头脑中想到的往往是,在信息传输过程中如何防止第三方截获。当然,小偷防是防不住的,不过我能保证他偷到东西也没用。双方只需要事先约定一套加密解密的方法,以密文的方式进行传输,这样便能很好地防止消息泄露。但有时候,“消息泄露”的内涵复杂得多,加密解密的传统方法并不适用。考虑这么一个问题:10个人坐在一起谈天,突然他们想知道他们的平均年薪是多少,但每个人都不愿意透露自己的工资数额。有没有什么办法让他们能够得出答案,并且不用担心自己的年薪被曝光?事实上,最简单的解决办法不需要依赖任何密码学知识:第一个人随便想一个大数,比如880516。然后他在纸条上写下这个数与自己的年薪之和,传给第二个人;第二个人再在这个数上加上他的年薪数额,写在另一张纸条上传给第三个人;直到最后一个人把纸条传回第一个人后,第一个人把纸条上的数减去只有自己知道的那个880516,便得到了全部10个人的工资和。可以看到,密码学不仅仅研究加密解密的数学算法。更多的时候,密码学研究保护信息安全的策略,我们可以称之为“协议”。在已有的数学模型基础上,我们往往忽略具体的数学实现方法,转而专注地研究借助这些数学工具能够构建的安全措施。除了消息保密性以外,密码学还研究一些更加有趣的问题。这里,就让我们一起来看四个有意思的密码学协议问题吧。首先我们来看一个日常生活中大家经常会遇到的密码学协议问题——签合同。签署合同会具备法律效应,人们往往不敢随意签名。合同一般同时规定了双方的权利和义务,并需要双方都在上面签名。第一个在上面签字的人就会觉得很亏:万一我签了字后对方突然翻脸耍赖不签了咋办?即使合同上规定“合同仅在双方均签署之后才有效”,这个问题仍然存在,因为后签名者将具有绝对的主动权,他想什么时候签就什么时候签,而只有他的签名才具有决定意义。因此很多时候,双方都希望能够在对方签名之后自己再签名,从而获得一些安全感。这里我们来探讨一个有趣的问题:有没有什么办法能够让双方同时签约,使得双方签名时都能确保自己的利益安全?如果我们谈论的是传统意义上的签名,同时签名当然是有可能办到的:双方只需要拿起各自的笔,同时在文件上写下自己的名字即可。当然,事实上肯定不会有人这么做。试想这样一个荒唐的画面:两个西装笔挺的人挤在一起,两只手臂磕磕碰碰地交错在一起,然后双方同时喊“三、二、一”并一起开始写字……比起自己丢掉的脸面,自己先签名所带来的忧虑似乎也不算什么了。有没有体面一些的,不那么荒唐的同时签字法呢?这里有一个很有启发性的办法。合同双方面对面地坐在桌子的两端。其中一个人在合同上写下自己名字的第一个字母,然后传给坐在对面的第二个人;第二个人写下他自己名字的第一个字母,然后又递回给第一个人;第一个人签下自己名字的第二个字母,再交给对方要求他写下他的名字的第二个字母……以此类推,直到双方都签署完自己的名字为止。为了让双方能够“同时”签完,名字较长的人偶尔可能需要连续写下两三个字母。换成汉字的话,这个方法同样适用——把字母改成笔划就行了。双方都愿意履行这一协议,因为在这个协议下双方是一点一点地签完整个文件的。第一个写字的人不会觉得自己很亏,因为写下一个字母是远不具备法律效应的;如果对方拒绝签他的第一个字母,我可以当即撕毁合同。虽然他们都不知道,究竟要写多少个字母才算签字,但大家都保持自己签下的名字长度与对方基本相当,因此不会担心对方突然放弃协议。就在这种互动的心理过程中,签名的法律效应一点一点地增强,直到最后双方写完自己的名字。但是,这个办法不能用于数字签名。利用电子加密算法进行签名是一个整体的过程,不能一部分一部分地进行。能不能把合同拆成若干份,然后双方一份一份地逐个签名呢?当然不行。如果某一份合同里有一个至关重要的义务性条款,后签名的人等对方签到这里后便可以立即终止签名,从而谋取利益。那么,能不能规定“仅当你把所有个部分的文件都签过了才算签”呢?这意味着最后一次签名才具有最终的决定意义,说穿了不过是把安全问题转移到了“谁签最后这一下”,问题实质上并未改变。其实,我们的解决办法相当简单。我们可以耍一个小花招,从本质上模拟上面的“逐字母签名法”。首先,第一个人签署这样一份文件:“我愿意以1%的概率接受该合同。”第二个人检查第一个人的签名,然后在上面附加一句“我愿意以2%的概率接受这份合同”,并进行签名,再交回给第一个人。第一个人检查对方已经签名,然后继续将这个条文升级为“我愿意以3%的概率签署该合同”并签名。双方来来回回签100次,直到最后第一个人签“我愿意以99%的概率签署这份合同”,然后轮到第二个人签署“我接受该合同”,最后再轮到第一个人签署“我接受该合同”。注意,这个“接受概率”是有实际意义的。如果在第一个人第一次签完文件后,第二个人立即放弃继续签署,法官可能会要求双方进行一次公开抽签测试,选取一个不超过100的正整数。如果这个数恰好为1,那么签署这句话的人就相当于签署了这份合同。类似地,我们也可以约定,当一人声称将以百分之()的概率接受此合同,另一人声明以百分之 的概率接受时,法官可以要求双方共同生成一个在1和100之间的整数:如果它不超过()则双方都接受,如果它的值比 大则双方都不接受,若它的值正好等于则合同仅被后者接受。因此,这种协议实质上是用概率法再现了“逐字母签名法”的核心思想,将法律效应的问题进行量化,使得率先签名的潜在危险减小到了原来的百分之一。合同签署的问题就说到这里了。让我们再来看另外一个有趣的协议问题。设想这样一个场景:总部打算把一份秘密文件发送给5名特工,但直接把文件原封不动地发给每个人,很难保障安全性。万一有特工背叛或者被捕,把秘密泄露给了敌人怎么办?于是就有了电影和小说中经常出现的情节:把绝密文件拆成5份,5名特工各自只持有文件的。不过,原来的问题并没有彻底解决,我们只能祈祷坏人窃取到的并不是最关键的文件片段。因此,更好的做法是对原文件进行加密,每名特工只持有密码的,这5名特工需要同时在场才能获取文件全文。但这也有一个隐患:如果真的有特工被抓了,当坏人们发现只拿到其中一份密码没有任何用处的同时,特工们也会因为少一份密码无法解开全文而烦恼。此时,你或许会想,是否有什么办法能够让特工们仍然可以恢复原文,即使一部分特工被抓住了?换句话说,有没有什么密文发布方式,使得只要5个人中半数以上的人在场就可以解开绝密文件?这样的话,坏人必须要能操纵半数以上的特工才可能对秘密文件造成实质性的影响。这种秘密共享方式被称为门限方案,意即5个人中至少3人在场才能解开密文。实现 门限方案的一个传统办法是,把这份文件的密码拆成 份,每个人持有 份密码。不妨假设文件的密码是一个100位数,那么在门限方案中,我们需要把这个密码拆成份,每份密码都是一个10位数。不妨把这10份密码分别用0到9编号,把每份密码都额外复制两份。5名特工各持有6份密码,密码的分配如下:特工#1 0 1 2 3 4 5特工#2 0 1 2 6 7 8特工#3 0 3 4 6 7 9特工#4 1 3 5 6 8 9特工#5 2 4 5 7 8 9你可以自己验证一下:任意3名特工碰头,都能凑齐这10份密码;但任意2名特工碰头,都无法凑齐所有的密码。上述分配表的构造其实很简单:给每个可能的“三人组”分配一份密码。从5个特工中选出3个人共有10种方案,因此我们正好要10份密码。例如把密码0分给特工1、2、3,把密码1分给特工1、2、4,一直到把密码9分给特工3、4、5。这样的话,任意2个人在场都无法打开文件,因为他们始终缺少一份密码(这份密码分给了其余3个人)。而任意3个人在场都足以打开文件,因为每一份密码都只缺少2个人的量,不可能出现这3个人都没有的情况。这样,我们便利用组合数学巧妙地解决了这一问题。在密码学中,我们有一些更精妙的方案。最巧妙的方法是,把文件密码编码为三维空间中的一个点,然后生成5个过该点的平面,每个特工持有其中一个平面方程。显然,2个特工在一起是无法获得原文件的,因为2个平面的公共点有无穷多个;但3个平面的交点是唯一的,因此任意3个人在一起都能解开原文件。另一个有趣的办法利用了下面这个事实:知道 次多项式函数上的任意个点就能恢复出整个多项式。因此,我们可以把文件密码编码为一个二次多项式 ,然后把 、 、 、 和的值告诉对应的特工。任意3个特工碰头之后,只需要解出这个多项式 即可恢复出文件的密码来。上述两种方案的本质都是相同的:把文件密码设为3个数 、 、 ,然后编写5个与 、 、有关的一次方程,并把这5个方程分别交给5名特工。假如文件的密码是116.35、39.975、67.167这3个数,只有同时输入这3个数,才能解开原文件。那么,我们就用这3个数编写五个三元一次方程:其中 、 、是它们的公共解。但是,要想确定出这个公共解,只有1个方程或者2个方程是不够的。事实上,至少需要3个方程,才能保证三元一次方程组存在唯一解。因此,至少需要3个人在场,才能获得秘密文件的密码。利用数论知识我们还能得到一个简单的协议。中国剩余定理告诉我们,给出 个两两互质的整数,它们的乘积为 ;假设有一个大整数,如果我们已知 分别除以这 个数所得的余数,那么在0到 的范围内可以唯一地确定这个 。我们可以想办法构造这样一种情况, 个数之中任意个的乘积都比 大,但是任意 个数的乘积就比 小。这样,任意 个除数就能唯一地确定 ,但 个数就不足以求出来。米尼奥(Mignotte)门限方案就用到了这样一个思路。我们选取 个两两互质的数,使得最小的 个数的乘积比最大的个数的乘积还大。例如,在 门限方案中,我们可以取53、59、64、67、71这5个数,前面3个数乘起来得200128,而后面两个数相乘才得4757。我们把文件的密码设为一个4757和200 128之间的整数,比如123 456。分别算出123456除以上面那5个数的余数,得到19、28、0、42、58。显然,知道任意3个同余方程就可以唯一地确定出123456,但仅知道2个方程只能得到成百上千个不定解。例如,假设我们知道了 除以59等于28,也知道了除以67得42,那么我们只能确定在0和 之间的解913,并且只能断定 是一个形如 的数,其中的数量级和当初选的那五个数一样大。我们的第三个协议问题就更有意思了。3个好朋友到一家餐厅吃饭。饭快吃完的时候,一个服务员过来告诉他们说,他们的账单已被匿名支付了。3个人都尊重他人匿名付款的权利,但同时他们也想知道,这个匿名支付者是他们三位中的一个,还是他们三人之外的某个第四者。有没有什么办法能够让他们知道在他们中间是否有人付账,但又保证任何人都推测不出究竟是谁付的账?利用3枚硬币就能轻易做到这一点。假设这3个人围着一张圆桌坐成一圈。每个人都在自己和右手边那个人中间抛掷一枚硬币,并用另一只手挡住硬币,使得这枚硬币只有他俩才看得见。这样的话,每个人都只能看见他左右的两枚硬币(但看不见桌子对面的第三枚硬币)。每个人都大声报出,自己身边的两枚硬币的正反面是否相同。如果他们中间有人付账,则这个人报出与实际情况相反的词,相同的话说“不同”,不同的话则说“相同”。显然,如果大家说的都是真话,则报“不同”的次数一定是偶数次。如果有奇数个人说“不同”,那么一定有一个人说假话,这表明匿名支付账单的人就在他们中间。注意到这个方案可以扩展到 个人。我们只需要证明,假如有个人坐成一圈,如果大家都说真话,则说“不同”的次数一定是偶数次。证明非常简单。想象你从某一枚硬币出发,顺时针查看每一枚硬币的正反,得到一个硬币正反序列。每当这个序列由正变反或者由反变正时,就相当于有一处“不同”的情况发生。然而,当你绕着圆桌走完一圈,回到出发点时,硬币序列又变回了出发时的正反。因此,途中发生的“不同”次数一定是偶数次。其实,抛掷硬币只是一个形象的描述方法罢了。在没有硬币,甚至大家根本没坐在一起的情况下,这个协议也很容易实施。比方说,先在网上公布整个协议规则,并约定一个虚拟的座位顺序;然后每个人都在1和2之间想一个数,并把结果以短信的形式发给他右边的那个人;最后每个人都按照协议规则,在网上发一个“相同”或者“不同”。这个协议有一个意想不到的用途——匿名的消息广播。假如一群人围坐成一圈开会,会议过程中需要在场的一个不愿透露自己身份的人进行匿名发言。为此,大家可以统一采用上面的抛硬币协议(或者对应的电子协议,只是为了简便,下面还是采用抛硬币的说法)。发言人将信息编码为一个长度为n的01串。硬币投掷分n轮进行。第轮中,其他人都严格按照实际情况报是否相同,发言人则根据编码信息的第 位的值来通报:若第 位为0,则按照实际情况通报;若第位为1,则说与实际情况相反的词。这样,实际的信息就应该是每轮叫“不同”的次数除以2的余数形成的序列。我们把最有意思的话题放在了最后。现在,假如你碰到了一个宣称可以预知未来的人,他说他知道下周的彩票中奖号码。你肯定不会相信,便用激将法让他说出下周的中奖号码:“你说出来啊,你要是说不出来,那就表明你不能预测未来。”不过,他却一本正经地说:“不行,我虽然能预测未来,但却不能把它说出来,否则会产生蝴蝶效应,改变这个宇宙既定的将来,导致危险的时空悖论。”哈哈,这个“先知”真是天才呀!能预言未来却不能说出来,这样就永远不能证伪了。不过,治他的方法也不是没有。比方说,可以叫他把预测结果写在一张纸上,锁进一个盒子里。然后,你拿走盒子,他拿走钥匙。彩票中奖号码公布后,你们再碰个头,把盒子打开,来看看当初的预测结果是否正确。这样便能让他做出一个谁都不能看见,但他今后也不能抵赖的预测。我们把这样的协议叫做“带有防欺骗的承诺”。只可惜,这种方法有一个局限性:它只能在现实生活中使用。如果你在网上遇到了自称能预知未来的人,你如何让他做出防欺骗的承诺呢?有人可能会说,为什么不让他给预言加一个密呢?就像之前让他给预言加上一把锁一样。比方说,让他在下周的中奖号码上加一个很大的整数,然后把结果告诉你;这个很大的整数就是解开中奖号码的密钥,由他自己保管。仔细想想你会发现,这个方案显然不行,因为到了验证预言的时候,他可以谎报这个大整数,让密码解开来后是任何一个他想要的数。为了防止他耍赖,能否让他事先就把密钥公布出来呢?这也不行——知道了密钥后,你就能直接获得密码原文了,这样便失去了保密的作用。注意到,传统的加密方法不能公开的原因就是,知道了加密方法也就知道了解密方法,只需要把加密方法反过来做就行了。有没有一种加密方法,使得即使你知道了加密的方法,也不能恢复出密码原文呢?有的。只需要在加密过程中加入一些不可逆的数学运算就行了。比方说,你们可以约定这样一种加密方法:先取中奖号码的正弦值的小数点后八位数字,得到一个八位整数;再求中奖号码与圆周率前六位数字形成的整数(314159)之和,取该和的平方的第3位到第10位,又得到一个八位数;最后计算这两个八位数的和除以456789的余数。假如他预言的中奖号码是1 234 567,那么对1 234 567进行上面这一串操作后,将会得到244685。但是,即使知道加密的过程,你也不能把244 685还原成1 234 567。事实上,1 234567甚至不一定是唯一解,很可能有别的数加密后也会变成244 685。上述加密方法能把任何数都加密成一个小于456789的数,因此必然会出现不同的数加密成同一结果的情况。这就意味着,这种加密方法是会丢掉原始信息的。我们不妨把这种不可逆的加密方法叫做“单向加密”。在密码学中,MD5和SHA1是两种比较常用的单向加密算法。由于其单向性,这种加密方法不能用于普通的信息传输。但它有很多其他的应用,做出带有防欺骗的承诺便是一例。拿到244685这个数后,你完全无法推出他究竟做了什么预测;到了验证预言的时候,只需要让对方宣布当初他的预测1 234 567,你来检验一下1234 567加密后是否会得到244 685就行了。不过,这个方法有一个局限性:如果他宣称他能预测某只股票会涨还是会跌,上述方法就有漏洞了。比方说,你们可以约定,数字1表示股票会涨,数字2表示股票会跌,然后让他用刚才的那套方法把他的预测结果加密发过来。如果他告诉你的结果是316554,那你只需要分别试一下1和2加密后分别得多少,就知道原始数据是1还是2了。原始数据的取值太有限,让穷举式的“暴力破解”变得易如反掌。怎么办呢?可以想办法硬把原始数据的取值范围扩大。比如,约定所有个位数字为1的数都表示股票会涨,约定所有个位数字为2的数都表示股票会跌。假如对方预测股票会涨,他可以选取任意一个末位为1的数,对其进行加密,这下你便没办法暴力破解了。不过,这里还有一个小问题:刚才我们说了,单向加密可能会把不同的原始信息加密成同一个结果,因此完全有可能出现这样两个数,它们的末位分别是1和2,但加密后的结果相同(虽然找到这样的例子并不容易)。为了避免对方手中持有精心构造的“两可解”情况,我们可以在每次实施协议时都改变一下协议的细节,比如每次都换一种单向加密方式,或者更好地,每次都要求对方选取的那个数必须以你想的某个随机数打头。这样一来,整个协议就完美了。其实,这个协议并不只在揭穿超能力者的时候才有用。我们生活当中有很多地方都可以用到带有防欺骗的承诺。有一次,我在战网上和别人打星际,打出了一个非常搞笑的局面:两边的兵都一个不剩,两边的钱也都不够造东西了,双方都完全丧失了战斗能力。但是,双方都还剩有建筑,因此都不算输。此时,必须有一个玩家主动认输,先退出游戏,才能结束僵局。该谁先退呢?我和他便在游戏中互发消息谈论了起来。其实,在现实生活中,这很好解决:来玩一次石头剪子布就可以了。但是,怎么在网上玩石头剪子布呢?总不能让一个人先发消息说“我出的是剪子”,另一个人回复“哈哈,我出的石头”吧。这时候,就要用到带有防欺骗的承诺了。我们可以利用前面讲的方法,各自向对方承诺自己要出什么拳,然后双方再公布自己出的拳,让对方验证自己并没撒谎。更简单的方法就是,我在1和2之间想一个数,然后把我想的数加密告诉对方,由对方来猜我想的数是多少,猜对了我就认输退出,猜错了他就认输退出。对方做出猜测后,我再公布加密前的原始信息,以证明我没有耍赖。我们常常在电视上看到这样的一幕:一位老太太兴冲冲地走上台去,翻过3个商标牌,发现上面尽是5块钱、10块钱的小奖,垂头丧气地回到观众席;然后主持人会跑出来,边翻着另外几个牌子边说,1000元的大奖在这个后面,800元的在这里之类的。为什么主持人要演出“事后揭大奖”这一幕呢?道理很简单,节目组想通过这个“验证过程”告诉观众,这个环节不是骗人的,大奖真的就在这里面,只是刚才那家伙运气背了没摸到而已。摸奖前宣称有大奖,摸完奖之后还能证实大奖真的存在,这也是带有防欺骗的承诺。但是,我们喝饮料参与开盖有奖活动时,就会有被欺骗的感觉:你说中奖率是千分之一,我凭什么相信你呢?那么,有没有办法让开盖有奖活动的中奖率变得透明呢?有的。我就想过这么一个方法。比如说,开盖后你将得到一个参与活动的序列号,把这个序列号短信发送给活动举办方参与抽奖。此时,活动举办方的服务器从1到1000中随机生成一个整数,并把这个整数加上你指定的前缀和它自选的前缀,用公开的单向加密方法加密后发回给你。你需要猜出服务器生成的数是什么,如果猜对就能中奖,如果猜错就结束游戏。发送了你的猜测结果后,服务器将发来加密前的信息,确保自己没有撒谎。密码学与协议的故事多得讲也讲不完。公钥加密算法、密钥交换协议、盲签名协议、投票协议、虚拟货币协议、中间人攻击……这些简直都是密码学中的珍宝。还没过瘾的读者,不妨买一本密码学与协议的书,继续研究下去。
更多阅读
暗黑2新人很可能不知道的重要知识2:宝盒合成下
暗黑2新人很可能不知道的重要知识2:宝盒合成下——简介简介 本文是宝盒合成相关知识介绍的下集,接着上次的进行。上次已经介绍了装备的若干基本知识,以及升级装备的方法。这次着重介绍给装备加凹槽、手工合成橙色装备以及随机改变蓝色
北通小手柄2 BTP 1126等手柄怎么使用设置玩游戏 北通手柄btp2185驱动
北通小手柄2 BTP 1126等手柄怎么使用设置玩游戏——简介北通小手柄2是一款性价比较高的手柄,利用 Windows内置驱动,即插即用。战戟2简化版,硬编程小手柄。推荐游戏:网络游戏:地下城与勇士、QQ飞车、QQ堂单机游戏:泡泡龙、格斗之王、超级
转载 读钱笔记——“色衰爱弛” 色衰爱弛
原文地址:读钱笔记——“色衰爱弛”作者:渔隐《诗经·卫风·氓》小序云:“华落色衰,复相弃背。”盖“色衰爱弛”之意始见于文字者。钱先生拈出《史记会注考证·吕不韦传》故实:“因使其姊说华阳夫人曰:‘吾闻之,以色事人
暗黑2新人很可能不知道的重要知识2:宝盒合成上
暗黑2新人很可能不知道的重要知识2:宝盒合成上——简介引言 这是我继“暗黑2新人很可能不知道的重要知识1:符文之语”之后的第二篇该系列百度经验。今天我们要谈的问题是很多新手关心的,赫拉迪克宝盒的合成公式。我看到很多在百度知道
新提醒 卓普小黑2 IMEI写码工具SN 卓普小黑3x
卓普小黑2 IMEI写码工具SN_Writer 刷串号必备驱动 恢复IMEI SN码 WIFI mac图文教程本教程旨在帮大家解决MT6592真八核手机卓普小黑2的“IMEI无效”、“串号丢失”等问题。当然本教程只是针对联发科MT6592真八核手机而言!四核/双核机