JAVA、PHP身份证、统一社会信用代码算法解析验证

3 篇文章 0 订阅

JAVA、PHP身份证算法解析验证

JAVA身份证号算法解析验证(待更新)
JAVA统一社会信用代码算法解析验证(待更新)
PHP统一社会信用代码算法解析验证

JAVA、PHP身份证算法解析: 其实上整个算法只是为了对比最后一位数是否正确
其实整体的思路和统一社会信用代码算法解析的思路是一样的
1.声明一个数组(加权因子) 以下是数组的元素 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2
2.声明一个数组验证码字符值’1’,‘0’,‘X’,‘9’,‘8’,‘7’,‘6’,‘5’,‘4’,‘3’,‘2’
3.进行循环遍历取出身份证的第一位和加权因子的第一个元素进行相乘,接着第二位对第二个元素…
4.将每次相乘到的数值进行相加
5.总和除以验证码元素的个数,得到的余数
6.以此余数作为下标取验证码字符值的元素
7.将此元素和身份证最后一位进行对比一致就是正确的
下方代码可以直接放进代码中使用的传入身份证号就行:

	public function shenfenzheng($Code){
	
      $patrn = "/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/"; //身份证
      if (strlen($Code)!= 18 || preg_match($patrn,$Code) == false) {
	 
        return false;
      } else {
	 $weight=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);    //十七位数字本体码权重
     $validate=array('1','0','X','9','8','7','6','5','4','3','2');    //mod11,对应校验码字符值    
	 $str="10X98765432";
     
          $sum=0;
          $mode=0;
          for($i=0;$i<strlen($Code);$i++){
		   $Ancode = substr($Code,$i, 1);         
              $sum=$sum+$Ancode*$weight[$i];
      }
         $mode=$sum%11;
		
		$checkcode = substr($Code,17, 18);
        if ($validate[$mode] != $checkcode) {
          return false;
        } else {
		 return true ;
        }
        return true ;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这只喵有点菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值