JMBGチェック桁
12桁の180198071000のチェックディジットは5で、完全なJMBGは1801980710005になります。セルビアやボスニア・ヘルツェゴビナ、モンテネグロ、北マケドニアで使われる市民番号を、重複登録が起きる前に完成・確認できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 数
- 180198071000
- 計算モード
- Compute
- 入力
- 180198071000
- 日
- 18
- 月
- 01
JMBG(Jedinstveni matični broj građana)は、しばしば固有市民マスター番号と訳される13桁の個人識別子で、旧ユーゴスラビア社会主義連邦共和国で導入され、後継国では民事登録・税務・医療・銀行・雇用のために、時にEMBGなどの関連名称でも現在も使われています。番号には生年月日を日月年(7桁:3桁年のDDMMYYY)、登録地の2桁地域コード、その日と地域内の3桁通し番号、末尾の1桁チェック桁が詰め込まれています。このチェック桁は任意ではなく、先頭12桁に対する固定加重和のmod-11から得られ、1桁の打ち間違いや桁の入れ替えが識別子の保存や照合の前に多くの場合拒否されます。本機能はそのチェックサムのみを実装します。computeモードはチェックなしの日付・地域・通し番号ちょうど12桁を受け取り、mod-11桁と完成した13桁文字列を返します。validateモードは13桁(任意の空白やハイフン可)を受け取り、末尾桁が再計算した期待値と一致するかを報告します。
旧ユーゴスラビアJMBGチェック桁の計算方法
旧ユーゴスラビア各共和国が共有したJMBG標準仕様では、チェック桁は番号の先頭12桁に対する加重mod-11値です。その12桁は7桁の日付ブロックDDMMYYY(日・月・生年の下3桁)、2桁の地域コード、その日と地域に割り当てられた3桁通し番号です。12位置それぞれに、7・6・5・4・3・2の繰り返し列からの固定重みを掛けます。
したがって左から右へ重みはちょうど7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2です。12個の積を合計し、その和の11による剰余を取り、暫定チェックは11からその剰余を引いた値です。暫定値が10または11のときは公開チェック桁は0、それ以外は暫定値そのものです。
よく知られた教材例は基数180198071000(生年月日1980年1月18日、地域71、通し000)で、チェック桁5と完全JMBG 1801980710005になります。もう一つのよくある例は010100650000でチェック桁6です。アルゴリズムは決定的かつローカルで、住民台帳呼び出しも時計も乱数もありません。
汎用mod-11やスウェーデンのpersonnummerツールと比べ、ここでの検索意図は狭いです。日付・地域・通しの基数向けJMBGチェック桁計算機、または13桁の旧ユーゴスラビア固有市民番号チェッカーを必要とする方向けであり、決済カードや北欧個人番号のツールではありません。
バルカンとディアスポラの実務でJMBGチェック桁が果たす役割
セルビア、ボスニア・ヘルツェゴビナ、モンテネグロ、北マケドニアおよび関連市場の銀行・フィンテックは、口座開設時に13桁のJMBGまたはEMBGを検証し、1回の転置で幽霊顧客と拒否されたKYC記録が生まれないようにします。
顧客・従業員マスタを読み込むETLジョブはCSVやXMLフィードの各JMBG列を走査し、validateモードを呼び、validがfalseの行を隔離して、人手編集と生成器のオフバイワンの両方を捉えます。
自治体や学校システムはハイフン付きとコンパクト形の両方を受け付けることが多く、桁検査前に空白とハイフンを除くことで第二のアルゴリズムを作らず契約を単純に保てます。ディアスポラ向けのビザ申請・送金アプリ・二重国籍ポータルは、何十年も前に出国した人が打ったJMBGをしばしば受け取り、高価な台帳照会の前に軽量チェックサムゲートが第一の防衛線になります。
どのワークフローでも約束は同じです。通過したJMBGチェックを、保持者が住民台帳で生存している、有効な国民IDを持つ、サービス権限があるという証明として扱わないでください。旧ユーゴスラビア公式重みの下でmod-11桁が日付・地域・通しと整合することだけを証明します。
活用例
マスタデータのJMBG列を監査する
CRM・EHR・給与CSVの各JMBGまたはEMBGを一括検証し、チェック桁が再計算した期待値と一致しない行を隔離します。
よくある質問
JMBGチェック桁とは何ですか?
旧ユーゴスラビア固有市民番号の第13桁で、7桁日付・2桁地域・3桁通しに対する加重mod-11で計算され、打ち間違いやスキャン誤りが保存前に多くの場合検出されます。
JMBGの13桁は何を表していますか?
最初の7桁は生年月日で、日、月、年の下3桁です。続く2桁は登録地域、次の3桁は通し番号、最後の1桁がチェックディジットです。1801980710005では18が日、01が月、71が地域です。
JMBGのチェックディジットはどう計算しますか?
12桁に7、6、5、4、3、2の重みを2回くり返して掛け、合計を11で割った余りを求めます。11から余りを引いた数がチェックディジットで、10か11になった場合は0とします。
正しいJMBGなら本人は実在しますか?
いいえ。分かるのは13桁の計算上のつじつまが合っていることだけです。住民の登録簿は照会しないため、本人の生存や登録、各種サービスの資格は分かりません。
JMBGとEMBGは同じ番号ですか?
EMBGは一部の後継国で使われる関連した呼び名で、同じ13桁の構造と同じチェックディジットの規則に従います。そのため同じ方法で計算や確認ができます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/jmbg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"180198071000"}'const res = await fetch("https://api.kit.forhosting.com/enc/jmbg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "180198071000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/jmbg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "180198071000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/jmbg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"180198071000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"180198071000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/jmbg", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": "180198071000"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.jmbg",
"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で失敗します。同じ純粋算術がブラウザでは無料、公開API価格でも動作し、住民台帳照会はなく、有効なチェックサムが生存・登録・サービス権限を意味するとも主張しません。
旧ユーゴスラビアJMBGチェック桁の計算方法
検証では12桁ペイロードから期待桁を再計算し、提出番号の第13桁と比較します。
入力契約、モード、エラー時の挙動
空白とハイフンは除去されるため、1801980-71-000-5のような一般的な表示形や空白区切りも正規化後に受け付けられます。computeモードが既定です。誤った長さはモードと送信長(computeは12、validateは13)を明示するエラーなので、クライアントフォームは推測せず正確なメッセージを示せます。空文字、number欠落、無効なmodeは加重和の前に失敗し請求されません。形式は正しいがチェック桁だけが違う文字列は例外を投げずvalid falseを返します。JMBG本体を含むnumberフィールドを送ってください。それ以外の句読点や文字は非数値入力としてinvalid_inputで拒否され、静かに削られた値が保存に届くことはありません。エンジンはちょうど12桁を要求し、check_digitを1文字の文字列で、with_checkを印刷や永続化できる13桁の完全JMBGで返し、監査用にday、month、year3、date(DDMMYYY)、region、serialも返します。validateモードはちょうど13桁を受け付け、末尾桁が再計算したexpected_check_digitと一致すればvalid trueを報告し、常にpayload(12の加重桁)、check_digit、expected_check_digit、同じ構造フィールド、length、アルゴリズムラベルjmbg-mod11と重み文字列を含みます。jmbg、embg、digits、codeなどのエイリアスが同じペイロード欄に使えるため、地域のフィールド名を既に使う統合は改名不要です。経路は時計・乱数・ネットワークなしの純粋parseのため、同じJSON本体は無料ブラウザと成功リクエストあたり$0.002のAPIで常に同じJSON結果になります。
バルカンとディアスポラの実務でJMBGチェック桁が果たす役割
医療ポータルと薬局システムは、クリニックが電話で番号を聞いたりスキャンした身分証から貼り付けたりするときにexpected_check_digitを再計算し、カルテや処方箋を記録する前に打ち間違いを捕捉します。雇用主と給与ベンダーはcomputeモードでサンドボックスの12桁基数を完成させ、本番識別子らしく見えるテスト従業員にwith_checkを保存します。
連携の活用例
テストfixture向けに12桁JMBG基数を完成させる
DDMMYYYに地域と通しを付けたcomputeモードを呼び、with_checkを保存し、サンドボックスのKYC・給与・医療テスト記録で13桁JMBGを使います。
入力・取込された固有市民番号を検証する
フォーム・銀行ファイル・HRフィードが13桁を送ったらvalidateモードを呼び、validがfalseなら登録を止め、expected_check_digitを示して1桁の打ち間違い修正を助けます。
技術的な質問
このAPIでJMBGチェック桁を計算するには?
numberをちょうど12桁(DDMMYYY+地域+通し)にしmode compute(またはmode省略)でPOSTします。応答にcheck_digitとwith_check(完全13桁JMBG)が含まれます。
完全な13桁JMBGを検証するには?
数字列(空白やハイフン可)とmode validateでPOSTします。応答にvalid、check_digit、expected_check_digit、payload(12の加重桁)が含まれます。
長さ誤り・文字・変な句読点ではどうなりますか?
空白とハイフン除去後、非数値や12桁(compute)・13桁(validate)以外の長さはinvalid_inputで拒否されます。失敗した検証タスクは課金されません。
JMBGチェック桁ツールは無料ですか?
ブラウザツールは無料でローカル実行です。API呼び出しは公開基準価格$0.002のプリペイドKIT残高を使い、無効入力は課金されません。