数字校验

来自计算思维百科
跳转至: 导航搜索
数字校验1.png

密码常常发挥着加密信息的传统作用,这样窥探者就不能轻易读取信息,或者防止第三方窃取我们的网上银行账户。但除此之外,密码还有很多其他用途,如预防数据库无故瘫痪或受到恶意攻击等。在购物时,如果对方在他们的机器中输入你的信用卡号码时,不小心输错了一位(尤其是相邻的两位数字顺序颠倒,比如将12写成了21,或是相同的两个数字写错,如将233写成了223),那可能就有别人为你买单了。在输入税务标识号、飞机票密码或护照号码时出错,则可能会通过电子系统传播开来,从而造成越来越多的混乱。请问这种情况要怎么解决呢?

解决方案

商界已经找到了一种对抗这种问题的办法:让这些号码自行校验,并告诉电脑所输入的号码是否为有效的机票或银行券序列号。有很多类似的方法可以校验信用卡卡号的有效性。很多公司都采用美国国际商用机器公司(IBM)引入的12或16位数字信用卡的校验系统,手工操作该过程比较费力,但用机器就可以瞬间检查完毕。如果识别出卡号输入有误或是为造的,校验系统就会将其驳回。

以假想的12位卡号4000 1234 5678 9314为例,首先,从第一位开始从左到右每隔一位抽出一个数字(即奇数位上的数字),分别乘以2,得到8、0、2、6、10、14、18、2。然后,将上述两位数10、14、8的十位和个位上的数字相加得到1、5、9,或者减去9(结果相同)。现在得到的数字就是8、0、2、6、1、5、9、2,将这些数字加起来,然后再加上原卡号中所有偶数位上的数字0、0、2、4、6、8、3、4,最后得出总和:

8+0+2+6+1+5+9+2+0+0+2+4+6+8+3+4=60。

要让卡号有效,经过上述计算后的总和必须能够被10整除,如上例中的60。而如果卡号为4000 1234 5678 9010,最后算出的结果是53(因为它只有最后一位和倒数第三位与上面的卡号不同),则不能被10整除。

这个校验过程可用于大多数信用卡。它能大量识别出简单的输入和读数错误,可以检查出所有单个数字的错误和大多数相邻数字顺序颠倒的问题。

运用的计算思维

容错纠错指在解决问题的过程中能够在出现数据、文件损坏或丢失时通过其他方式保证工作的正常进行找到错误所在。本案例介绍的数字检验方法可以校验信用卡卡号的有效性,预防数据库无故瘫痪或受到恶意攻击,体现了容错纠错的计算思维。