中国住民IDチェックディジット
11010519491231002を入力するとチェック文字はXで、番号全体は11010519491231002Xになります。18文字を貼り付ければ、最後の文字が合っているかも確かめられます。登録フォームや給与データの点検に便利で、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Id
- 11010519491231002
- 計算モード
- Compute
- 入力
- 11010519491231002
- チェックディジット
- X
- Id
- 11010519491231002X
中国の住民身分証番号(居民身份证)は、中国本土の銀行、通信、旅行、医療、行政フォームで使われる18文字の個人識別子です。17桁が行政区画・生年月日・性別も表す連番を符号化し、第18文字はISO 7064 MOD 11-2から導かれるチェックディジットで、1文字の打ち間違いや多くの破損文字列が別の有効登録に見えないようにします。本機能は純粋な17桁の本体からそのチェック文字を計算するか、18文字の完全なIDを検証し、保存された桁が再計算値と一致するかを報告します。どちらの経路も同じ純粋な合同算術を共有し、ネットワーク往復も生存者の登録簿もありません。
中国住民IDのチェックディジットの計算方法
中国本土の住民身分証番号は、句読点なしで書くと常に18文字です。先頭17桁は十進数字で、行政区画コード、生年月日(YYYYMMDD形式)、3桁の連番(慣例では奇数=男性、偶数=女性)を符号化します。第18文字は市民身分証番号の国家規格で採用されたISO 7064 MOD 11-2に基づくチェックディジットです。
17の各位置では、桁に固定重みWi=2の(18−i)乗を11で割った余りを掛けます。これにより、よく知られた重み列7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2が得られます。重み付き積を合計し、合計を11で割った余りが、表1、0、X、9、8、7、6、5、4、3、2からチェック文字を選びます。
余り2はX、余り0は1です。同等に、チェック値は12から合計の11剰余を引いた量をさらに11で割った余りで、10は文字Xと書きます。検証は逆です。 先頭17桁から文字を再計算し、末尾文字(十進数字または大文字X)と比較します。
アルゴリズムは固定重みの純粋な整数合同算術なので、同じ17桁はブラウザ、Worker、オフラインテストハーネスのいずれでも常に同じチェック文字を生成します。そのため本機能はモデル呼び出しではなくティアAのparseエンジンとして提供されます。*ツールで使うISO 7064 mod 97-10方式と区別できるようにします。
中国IDチェックディジットが製品ワークフローに効く場面
中国本土の顧客を受け入れるフィンテックやマーケットプレイスのオンボーディングでは、早い段階で住民IDを求めることが多いです。フォーカスアウト時にチェックディジットを検証すれば、キーストロークごとに国家登録を呼ばずに、失敗送信とサポートチケットを減らせます。
従業員や学生のCSVを取り込む給与・人事・キャンパス系は、第18文字が一致しなくなった行を隔離すべきです。人手の編集も上流ジェネレータのオフバイワンも検出できます。どのワークフローでも契約は同じです。
合格チェックディジットを法的身分や在留の証明と見なさないでください。18文字文字列が中国住民IDの公式規則下で算術的に整形式であることの証明に過ぎず、他の国家IDチェックサムツールと同じ誠実さの基準です。製品ポリシーが求めるなら行政区コードや生年月日範囲の独自規則と組み合わせてください。
活用例
フィクスチャとフォーム用に17桁の本体を完成させる
テスト計画や部分レコードから17桁の本体を取り、computeモードを呼び、ISO 7064 MOD 11-2のチェック文字を付けた18文字の完全なidを保存または表示します。
一括エクスポートの住民ID列を監査する
給与CSVやERP抽出のすべての中国住民IDを一括検証し、チェック文字が再計算値と一致しない行を隔離します。
よくある質問
中国住民IDのチェックディジットはどう計算しますか?
先頭17桁に重み7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2(2^(18-i) mod 11)を掛け、合計を11で割った余りを1,0,X,9,8,7,6,5,4,3,2に対応づけます。10をXとするISO 7064 MOD 11-2です。
チェック文字がXになり得るのはなぜですか?
ISO 7064 MOD 11-2は11記号を使います。アルゴリズムが10になったとき、国家規格は2桁目の代わりに文字Xを書き、IDを18文字のままにします。
最初の17桁にはどんな情報が含まれていますか?
行政区画、年月日で表した生年月日、3桁の順番号が含まれています。一般的な決まりでは、この順番号は男性なら奇数、女性なら偶数になります。
チェック文字が正しければ本物の身分証だと言えますか?
言えません。分かるのは番号が計算上正しく作られていることだけです。その人が戸籍に登録されていることや、身分証が今も有効であることは証明しません。
空白やハイフンが入った番号を貼り付けられますか?
できません。空白、ハイフン、ピリオドなどの記号は黙って取り除かず、エラーとして扱います。先に書式を外してください。末尾の小文字のxは受け付けられ、大文字のXに直されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/china-id \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"id":"11010519491231002"}'const res = await fetch("https://api.kit.forhosting.com/enc/china-id", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"id": "11010519491231002"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/china-id",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"id": "11010519491231002"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/china-id", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"id":"11010519491231002"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"id":"11010519491231002"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/china-id", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"id": "11010519491231002"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.china_id",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
数字以外の本体、誤った長さ、空入力、不正文字は明確なinvalid_inputエラーで拒否されます。ブラウザでは無料で実行でき、KIT APIも呼び出せます。
チェックディジットの計算と完全なIDの検証方法
ユーザーが空白やハイフン付き文字列を貼り付けた場合はクライアント側で整形を外してください。mode computeが既定です。mode validateはちょうど18文字を期待します。空文字、id欠落、不正なmode、誤った長さ(例:16文字や19文字)は重み付き和の前に失敗し、課金されません。テストやフィクスチャ用に部分登録キーを完成させるときはcomputeを、フォーム・CSV・スキャナから完全IDを受け取り保存前の真偽ゲートが必要なときはvalidateを選んでください。合格のチェックディジットはISO 7064 MOD 11-2下の算術的な整形式性のみを証明し、戸籍に人物が存在することや文書が有効であることを証明しません。本体は数字のみ、検証時は末尾が数字またはXであるidフィールドを送ってください。空白、ハイフン、ドットなどの句読点はnon-ID入力としてinvalid_inputで拒否され、フォームが黙って整形済み値を受け入れないようにします。ちょうど17桁の本体を渡すと、エンジンはcheck_digitを0〜9またはXの1文字、idを18文字の完全番号、lengthを18、algorithmをiso7064_mod11_2として返します。応答のvalidがtrueになるのは、末尾文字が再計算したexpected_check_digitと一致する場合だけです。常にbase(先頭17桁)、送信どおりのcheck_digit、expected_check_digit、baseと期待文字から成る正規のidを含みます。この形により、KYCや登録UIで「入力はX、期待はY」を2回目の要求なしに表示できます。経路は時計・乱数・ネットワークのない純粋parseのため、同じ入力は無料ブラウザツールとAPIで常に同じJSONになります。成功リクエストあたり$0.002で、大量CRM取込、パートナーファイル監査、フォームゲートをカスタム階層の交渉なしに保護できます。
中国IDチェックディジットが製品ワークフローに効く場面
市民キーとしてIDを受け付ける通信・旅行・ホスピタリティのポータルは、validがtrueになるまで進めず、桁が誤っていればexpected_check_digitを表示できます。データ品質ジョブはエクスポートの各ID列でexpected_check_digitを再計算し、請求や税務レポートに達する前に不一致をフラグします。
連携の活用例
入力時に手入力・取込の住民IDを検証する
登録フォーム、CRM取込、パートナーAPIが18文字を送ったらvalidateモードを呼び、validがfalseのときは保存を止め、expected_check_digitを示して打ち間違いを直します。
技術的な質問
17桁からチェックディジットをどう計算しますか?
mode compute(またはmode省略)でちょうど17桁のidをPOSTします。応答にcheck_digit(0–9またはX)と18文字の完全なidが含まれます。
18文字の中国IDをどう検証しますか?
18文字すべてをmode validateでPOSTします。末尾文字がexpected_check_digitと一致するときだけvalidがtrueで、送信文字と期待文字の両方が返ります。
中国住民IDチェックディジットツールの料金は?
ブラウザツールは無料です。APIリクエストは成功呼び出しあたり$0.002の前払いKIT残高を使い、無効入力は課金されません。