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"> <