1. 程式人生 > >Java實現身份證校驗演算法

Java實現身份證校驗演算法

public class ValidateNumberId {

    private static String[]  validtable =  {"1","0","X","9","8","7","6","5","4","3","2"};

    public static boolean cleckIdNumber(String ID){
        boolean flag = false;
        //驗證碼
        String validatecode = ID.substring(17,18);
        //前17位稱為本體碼
        String selfcode = ID.substring(0
,17); String code[]=new String[17]; for(int i=0;i<17;i++){ code[i] = selfcode.substring(i,i+1); } //加權因子公式:2的n-1次冪除以11取餘數,n就是那個i,從右向左排列。 int sum = 0; //用於加權數求和 for(int i=0;i<code.length;i++){ //計算該位加權因子 int yi = adjustmentfactor(i+1
)%11; //得到對應數位上的數字 int count = Integer.parseInt(code[code.length-i-1]); //加權求和 sum +=(count*yi); } //驗證校驗碼是否正確 String valdate = validtable[sum%11]; if(valdate.equalsIgnoreCase(validatecode)) { flag = true; } return
flag; } /** * 計算身份證數位數字加權因子 * digit表示數位 */ public static int adjustmentfactor(int digit){ int sum = 1; for(int i=0;i<digit;i++){ //sum=sum*2; sum=sum<<1; } return sum; } public static void main(String[] args) { System.out.println(System.currentTimeMillis()); System.out.println(cleckIdNumber("620321199112302114")); System.out.println(System.currentTimeMillis()); } }

相關推薦

Java實現身份證演算法

public class ValidateNumberId { private static String[] validtable = {"1","0","X","9","8","7",

CRC查表法——表的由來及Java實現CRC8演算法

你也可以檢視我的其他同類文章,也會讓你有一定的收貨! 大概思路 我先說一下查表法,表的計算方法,以CRC4為例: 生成多項式:B = 10011B 測試資料:A = 0011 1110B 1、查表法實際上是利用XOR的交換律和結合律:(A X

Java使用luhn演算法實現銀行卡號合法性&&獲取銀行卡號所屬銀行

Luhn校驗演算法或是Luhn 公式,也被稱作“模10演算法”。它是一種簡單的校驗公式,一般會被用於身份證號碼,IMEI號碼,美國供應商識別號碼, 或是加拿大的社會保險號碼的驗證。該演算法是由IBM的科學家Hans Peter Luhn所創造,於1954年1月6日提出該

java 實現CRC32

https://blog.csdn.net/yjk2515279130/article/details/46045939 實現了CRC32校驗,本來java那邊是很簡單的,直接用  java.util.zip.CRC32 這個類就可以了,可是如果要和Delphi那裡

使用javascript實現身份證與資訊提取

我們先了解一下身份證是怎麼校驗的: 將前面的身份證號碼17位數分別乘以不同的係數,將這17位數字和係數相乘的結果相加,然後除以11求餘,根據最後的餘數對應校驗碼,判斷身份證是否符合要求。 現在我們開始寫程式碼 <!DOCTYPE html> <html> <hea

java實現CRC16碼生成

public static String crc16(String gprsstr) { try { int crc; int strlength, r; byte sbit; int tc; strlength = gprsstr.len

Java實現身份證演算法

每一個身份證號碼,都不是胡亂隨機生成的,而是按照國家的規定,有規則的生成的,具體規則點選這裡檢視。我們校驗使用者的身份證輸入,僅靠簡單的位數判斷、正則校驗是達不到測試要求的,因此就需要根據國家的規定,把身份證的生成規則轉變為演算法,通過演算法來校驗使用者的輸入是

java實現CRC16 MODBUS演算法

最近做通訊開發,遇到了校驗碼的問題 我在這個網站上試了試 裡面有各種crc16的校驗碼 廢話不多說,直接上程式碼 /** * 計算CRC16校驗碼 * * @param bytes * @return

java實現銀行卡卡號 Luhm 演算法

效驗是否為銀行卡,用於驗證 現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的,可能是髮卡分行,髮卡網點,髮卡序號,第 16 位是校驗碼。16 位卡號校驗位採用 Luhm 校驗方法計算:1,將未帶校驗位的 1

CRC演算法實現 C

 標準CRC生成多項式如下表:   名稱       生成多項式             簡記式*  標準引用    CRC-4       x4+x+1                  3         ITU G.704    CRC-8       x8+x5+x

關於CRC演算法及其C程式碼實現

以CRC16作為參考: CRC16常見的標準有以下幾種,被用在各個規範中,其演算法原理基本一致,就是在資料的輸入和輸出有所差異,下邊把這些標準的差異列出,並給出C語言的演算法實現。 CRC16_

Luhn algorithm(附信用卡演算法C語言實現

From Wikipedia, the free encyclopedia The Luhn algorithm or Luhn formula, also known as the "modulus 10" or "mod 10" algorithm, is a simple checksum formu

SHA1演算法C語言實現

SHA1 安全雜湊演算法:對於長度小於2^64位的訊息(1M = 1024k,1K = 1024位元組,1BYTE = 8bit 可以想象一下2的63次方位可以表示一個多大的資料檔案),SHA1會產生一個160位的訊息摘要。當接收到訊息的時候,這個訊息摘要可以用來驗證資料的

最嚴格的身份證Java版)

        上一篇部落格貼出了JavaScript版本的身份證校驗,本篇部落格將貼出Java版的身份證校驗:                 import java.util.Date;          /**          * 校驗身份證號碼是否有效      

NandFlash ECC 演算法原理與實現

ECC的全稱是Error Checking and Correction,是一種用於Nand的差錯檢測和修正演算法。如果操作時序和電路穩定性不存在問題的話,NAND Flash出錯的時候一般不會造成整個Block或是Page不能讀取或是全部出錯,而是整個Page(例如5

Luhn演算法 C#實現 信用卡

public static bool IsValidCreditCard(string cardNumber)         {             if(cardNumber.Length!=16)             {                 thr

18位身份證碼驗證算法

div style charat span true class fun cnblogs test function checkCode(card){ if (/^\d{17}[\dxX]$/.test(card)) {

Java實現身份證號碼驗證源碼分享

分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

最嚴格的身份證

國外 equal ppr ron 新疆 false elseif tor 河南 import java.util.Date; /** * 校驗身份證號碼是否有效 * * @author GaoH

計算身份證碼(最後一位)

map git 校驗碼 meta ffi spa class ++ msg 在線預覽 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <