Jak*_*cas 7 algorithm credit-card luhn
首先,我不确定这是否应该在stackoverflow上,但我想我还会试着问.
在过去,我总是使用luhn算法进行信用卡号码的错误检查,但今天我想我会在php中实现verhoeff算法,主要是为了消磨时间.
我用我自己的卡号测试了它并且工作正常,这开始让我考虑是否应该使用verhoe而不是luhn来进行我的信用卡号码错误检查.
现在我的问题:
使用verhoe比luhn有什么显着的优势吗?
我知道verhoeff在它的实现中稍微复杂一点,它可以检测到比luhn更多的转录错误,这自然会让我相信它有点慢,但除了检测更多转录错误和缺点的优势(如果你可以称之为稍微慢一些,我想不出任何其他真正的差异.
verhoeff算法适用于所有主要卡吗?
我知道luhn将适用于所有主要卡片但是verhoeff也适用于所有这些卡片吗?我假设它适用于所有人,但我认为我应该检查.
有没有理由我只看到有人使用luhn检查信用卡号码?
在我作为开发人员的所有时间里,我只是真的看到人们使用luhn算法检查信用卡号码.这有充分的理由,还是仅仅因为luhn更为人所知?
任何帮助将不胜感激,谢谢你的时间.
它们是不同的算法,并且可以给出不同的结果(如果结果总是相同的那么它们在功率上是相同的 - 你已经说过Verhoeff更强,所以你必须同意有一些数字给Luhn赋予不同的值!) .
与信用卡一起使用时,您可以根据号码的其余部分检查最后一位数字.该校验位出现在卡上(因此是固定的)并使用Luhn算法计算.
所以你不能使用Verhoeff,因为信用卡上的最后一位数字是Luhn.要使用Verhoeff,您必须更改已经存在的(某些)卡的最后一位数.
设计原始信用卡格式的人有这个选择(模数历史细节)并决定与Luhn一起去.他们选择了.你不能回想起他们的决定,因为Luhn校验位出现在现有的牌上.
(我不知道你是怎么设法用这个算法检查你的卡.以太你很幸运,或者你的代码坏了,或者我错了......)
简单来说:它不会起作用.他们不一样,Luhn的选择是由信用卡发行人做出的.
用更复杂的术语来说:如果两者兼容,那么它们的功率相等,切换就没有意义.您不能有两个不同功率的校验和,它们会产生相同的结果.这是一个微妙的观点,但考虑一下......
| 归档时间: |
|
| 查看次数: |
4479 次 |
| 最近记录: |