关于校验算法的学习(学习以太网时遇到的)以太网的包头还是数据都会有校验,在FPGA上实现IP核时,用的是CRC校验,然后学习ICMP协议时,也看到一种校验算法,以此学习分析一下背后原理。一、先看看ICMP的包格式,主要是写ping命令是用到(会有一篇专门将ping的c语言实现),所以只是展示与ping命令背后的ICMP规则。
(来自维基) 对于校验的研究暂时不需要理解其他数据的意思,维基对checksum的解释为 Checksum Error checking data...
这篇文章主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,实例分析了php实现Luhn算法及相关应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。具体实现方法如下:$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split( , $numbers) as $n)echo "$n is ", luhnTest($n) ? valid : not valid, </br>;function luhnTest...
按照ISO 2894中支付卡校验位的算法 The Luhn Mod-10 Method 规定:
1、对卡号上的每位数字乘以权重。其规则是,如果卡号数字个数是偶数,则第一位乘以2,否则就乘以1,然后以后分别是,1,2,1,2,1,2;2、如果每位数字乘以权重后超过9 ,则需要减去 9;3、将所有的处理过的加权数字求和,用 数字 10 求模运算;4、余数应该是0,否则可能是输入错误。也可能是一个假号。 顺手PHP简单实现下,实际场景前端验证好一些,例如JS。代码如下: fun...
PHP实现通过Luhn算法校验信用卡卡号是否有效,luhn算法本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:
$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split( , $numbers) as $n)echo "$n is ", luhnTest($n) ? valid : not valid, ;function luhnTest($num) {$len = strlen($num);for ($i = $len-1; $i >= 0; $i--) {$ord = ord...
PHP实现通过Luhn算法校验信用卡卡号是否有效 这篇文章主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,实例分析了php实现Luhn算法及相关应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:12345678910111213141516$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";foreach (split( , $n...
PHP CRC16 校验码的算法如何使用最近用到CRC16,我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1最后完整的代码就是 01030118000105F1 我现在需要用php程序,写个函数,来计算这个 05F1 , 网上很难找到 php语言中的CRC16 应用实例,昨晚发现php.com官方有这样一个介绍。http://cn.php.com/manual/en/function.crc32.phpPHP code
I made this code to verify Transmition with Vantage Pro2 ...
基于pboc 2.0规范的MAC校验算法ECB模式~~谁有用php实现代码?或告诉应该如何实现?
求高手指点~~急!!!!------解决方案--------------------怎么没人来?自己帮顶!!------解决方案--------------------pboc、ECB模式、MAC校验。。。我只听说过MAC地址。。。
帮顶+学习~------解决方案--------------------怎么都没人来?------解决方案--------------------问题已解决!结贴------解决方案--------------------两种模式,...
按照ISO 2894中支付卡校验位的算法 The Luhn Mod-10 Method 规定:
1、对卡号上的每位数字乘以权重。其规则是,如果卡号数字个数是偶数,则第一位乘以2,否则就乘以1,然后以后分别是,1,2,1,2,1,2;2、如果每位数字乘以权重后超过9 ,则需要减去 9;3、将所有的处理过的加权数字求和,用 数字 10 求模运算;4、余数应该是0,否则可能是输入错误。也可能是一个假号。 顺手PHP简单实现下,实际场景前端验证好一些,例如JS。代码如下: fun...
本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split( , $numbers) as $n)echo "$n is ", luhnTest($n) ? valid : not valid, ;function luhnTest($num) {$len = strlen($num);for ($i = $len-1; $i >= 0; $i--) {$ord = ord($num[$i]);if (($len - 1) & $i) {$sum += $ord;} else...
本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:
$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split( , $numbers) as $n)echo "$n is ", luhnTest($n) ? valid : not valid, ;function luhnTest($num) {$len = strlen($num);for ($i = $len-1; $i >= 0; $i--) {$ord = ord($num[$i]);if (($len - 1) & $i) {$sum += $ord;} els...
本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:
$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split( , $numbers) as $n)echo "$n is ", luhnTest($n) ? valid : not valid, </br>;function luhnTest($num) {$len = strlen($num);for ($i = $len-1; $i >= 0; $i--) {$ord = ord($num[$i]);if (($len - 1) & $i) {$sum += $ord;...
按照ISO 2894中支付卡校验位的算法 The Luhn Mod-10 Method 规定:
1、对卡号上的每位数字乘以权重。其规则是,如果卡号数字个数是偶数,则第一位乘以2,否则就乘以1,然后以后分别是,1,2,1,2,1,2;2、如果每位数字乘以权重后超过9 ,则需要减去 9;3、将所有的处理过的加权数字求和,用 数字 10 求模运算;4、余数应该是0,否则可能是输入错误。也可能是一个假号。 顺手PHP简单实现下,实际场景前端验证好一些,例如JS。
代码如下: ...
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验
下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验):
iOS代码:
/*** 银行卡格式校验** @param cardNo 银行卡号** @return */+ (BOOL) checkCardNo:(NSString*) cardNo{int oddsum = 0; //奇数求和int evensum = 0; //偶数求和int allsum = 0;int cardNoLength = (int)[cardNo le...
18位身份证校验算法 身份证校验码算法 身份证校验码产生方法: ∑(ai×Wi)(mod 11) i: 表示号码字符从由至左包括校验码在内的位置序号; ai 表示第i位置上的号码字符值; Wi 第i位置上的加权因子,其数值Wi=mod(power(2,(n-1)),11) i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 相应的校验码: ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10 校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2 下面...
回复内容:
这段代码我可以跟你解释,是个经典代码了,刚好我也刚看过,我这是长这个样子的:def checksum(data):if len(data) % 2:data += b'\x00's = sum(array.array('H',data))s = (s & 0xffff) + (s >> 16)s += (s >> 16)return _socket.ntohs(~s & 0xffff)