身份證最後一位的校驗
身份證的最後一位數字(或者字母)是依賴於之前所有數字的。
根據前面17位數字,計算得到最後一個字元的過程,稱為身份證校驗演算法。
這個演算法的計算過程如下:
- 將身份證號碼的前17位數字,與校驗權重表中對應的權重,分別相乘,並求和。
- 將以上的求和結果,對11取餘,得到一個校驗表下標
- 根據上一步得到的校驗表下標,得到身份證最後一位的符號
以上的演算法過程中,有兩個表,非常適合使用陣列儲存。
//權重表
int weightTable[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
//校驗碼錶
char chCheckTable[11] = {‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’,‘2’};
#include <stdio.h>
int main(void)
{
int ID[17] = { 3,7,1,1,0,2,1,9,9,6,0,8,2,5,5,9,8};//身份證前17位
int weightTable[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };//對應權重
char chCheckTable[] = { '1','0','X','9','8','7','6','5','4','3','2' };//對應校驗碼
/*
將身份證號碼的前17位數字,與校驗權重表中對應的權重,相乘,並求和。
將以上的求和結果,對11取餘,得到一個校驗表下標
根據上一步得到的校驗表下標,得到身份證最後一位的符號
*/
int sum = 0;//定義一個int型別的sum來存放權重相乘之和
for (size_t i = 0; i < sizeof(ID)/sizeof(ID[0]); i++)
{
sum += ID[i] * weightTable[i];
}
printf("和取餘是%d\n",sum % 11);
printf("校驗碼為%c\n",chCheckTable[sum%11]);
return 0;
}
相關文章
- 舊香港身份證校驗
- 7-4 身份證號碼最後一位 (100分)
- PHP獲取IMEI號最後一位校驗碼PHP
- 身份證合法性校驗
- javascript身份證號碼校驗JavaScript
- 一個簡單的身份證校驗
- JS校驗身份證號的合法性JS
- PHP校驗15位和18位身份證號PHP
- 在Delphi中使用正規表示式校驗身份證號
- 身份證驗證工具類
- 【PTA】查驗身份證
- PHP 驗證身份證號碼PHP
- C++身份證號驗證C++
- 前後端分離專案,後期前端身份驗證的麻煩後端前端
- [譯]簡單的React身份校驗機制React
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- python - 驗證身份證合法性Python
- js正則驗證身份證號JS
- 中國身份證號驗證庫
- kafka SASL/PLAIN 身份驗證KafkaAI
- 客戶端身份驗證客戶端
- NET Core 多身份校驗與策略模式模式
- Spring boot 生成動態驗證碼並前後端校驗Spring Boot後端
- asp.core 同時相容JWT身份驗證和Cookies 身份驗證兩種模式JWTCookie模式
- 7-3 查驗身份證
- SpringBoot整合JWT做身份驗證Spring BootJWT
- JS驗證18位身份證號的正確性JS
- win10 的windows身份驗證怎麼開啟_win10怎麼進行身份驗證Win10Windows
- 前端資料校驗後,後端介面是否需要再次校驗?前端後端
- C++批次核驗身份證真偽、實名認證介面、身份證識別C++
- flowable 繞過idm自帶的身份驗證
- node實現基於token的身份驗證
- Rust中實現JWT身份驗證RustJWT
- 【仙山】flutter版谷歌身份驗證器Flutter谷歌
- 簡聊 Session 與 Token 身份驗證Session
- L1-016. 查驗身份證
- Javascript使用正則驗證身份證號(簡單)JavaScript
- JavaScript身份證真偽查驗介面廠家有哪些?身份證查詢真偽JavaScript