シード付き数字PIN生成
桁数6、シード release-demo-2026 なら必ず 095015 になり、弱いとは判定されません。フォームのテスト、画面の撮影、デモ用に再現できるPINを作れ、7777、1234、4321 のようなパターンは警告されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 長さ
- 6
- シード値
- release-demo-2026
- Pin
- 095015
シード付き数字PIN生成ツールは、指定された桁数とテキストのシードを、数字だけで構成される安定したPINへ変換します。同じ入力からは必ず同じ結果が得られるため、テスト用データ、デモ、再現可能なサンプル、決定論的な仮入力に適しています。さらに、同じ数字だけの反復、厳密な昇順、厳密な降順という明らかに弱い形も報告します。時刻、ネットワーク、乱数源、保存済み状態は使用せず、4桁未満の指定は受け付けません。
必要なときに同じPINを再生成できます
生成ツールはシードの各文字を固定された32ビットの初期状態へハッシュ化し、要求された位置ごとに状態を1回進め、得られた値を10進数字へ割り当てます。PINは数値ではなくテキストとして返されるため、先頭がゼロでも失われず、指定桁数に含まれます。大文字と小文字を含め、同じ桁数と同じシードを再度指定すると、すべての出力項目が一致します。
桁数またはシードの1文字を変更すれば、決定論的な列も変わります。空文字列も有効なシードですが、テストデータでは内容を示す名前の方が識別しやすくなります。隠れた状態がないため、PIN自体をコピーしなくても、共同作業者や自動処理が同じ例を再現できます。
再現性が必要な場合は、桁数とシードの両方を記録してください。この組み合わせが結果を復元する完全な手順になります。固定アルゴリズムは安定したテスト用データ向けであり、秘密のエントロピーを作るものではありません。
弱いパターンの報告を確認できます
PIN全体が1種類の数字だけで構成される場合、隣り合う数字が常にちょうど1ずつ増える場合、または常に1ずつ減る場合にweakが真になります。9と0の間を循環する連番は扱わないため、7890は厳密な昇順とは判定されません。どの条件にも当てはまらない場合、weakは偽で一覧は空です。
この検査は意図的に範囲を絞り、理由を理解しやすくしています。推測される確率の計算、漏えいしたPIN一覧との照合、誕生日の検出、別の場所での再利用確認は行いません。7777、1234、4321のような明白な形に対する即時警告としてお使いください。
警告されなかったPINの安全性を保証するものではありません。桁数を増やすと数字の組み合わせは増えますが、シードとアルゴリズムを知る人には結果を予測できます。
決定論的なPINは適切な用途だけでお使いください
シード付き生成は、秘密性より再現性が重要な場面に適しています。フォームの自動テスト、画面キャプチャ、文書の例、機器シミュレーター、研修課題、開発環境へ安定した値を提供できます。失敗したテストで桁数とシードを記録すれば、別の開発者も同じケースを正確に再現できます。
実際の認証PIN、復旧コード、決済資格情報、ドアコードなど、予測への耐性が必要な値には使用しないでください。この生成ツールは意図的に決定論的で、暗号学的な安全性はありません。シードを知った人はPINを再現できます。
実際の認証情報には、認証システムが管理する暗号学的に安全な乱数源を使用し、試行回数を制限し、よくある組み合わせを禁止して、登録と復旧の方針に従ってください。シードは応答に含まれ、ログにも残る可能性があるため、個人情報を入力することも避けてください。ブラウザーでは同じ純粋な計算をローカルで実行でき、自動化前の確認に便利です。
活用例
フォームテスト用の安定した値を作成
別の固定値を保存せずに、検証テストやエンドツーエンドテストで同じ数字入力を再生成できます。
シミュレーターの状況を再現
シードと桁数を共有し、機器やキオスクのシミュレーションで使った正確なPINを再構築できます。
再現可能な文書を準備
画面例と手順例をビルド間で統一し、実運用外のサンプルであることを明確に示せます。
よくある質問
同じシードからは常に同じPINが生成されますか?
はい。 大文字と小文字を含めて同じシードと桁数を指定すると、このアルゴリズムでは同じPINと検査結果になります。
どのようなパターンが弱いと判定されますか?
同じ数字だけの反復と、循環しない厳密な昇順または降順の数字列を検出します。
生成したPINを実際のアカウントに使えますか?
いいえ。 この決定論的生成ツールは再現可能なサンプルとテスト用であり、認証や復旧の秘密情報には適しません。
PINの先頭の0が残るのはなぜですか?
PINは数値ではなく文字列として返されるため、先頭の0もそのまま残り、桁数に含まれます。そのため 095015 は短い数値にならず、6桁のままです。
桁数を4未満にするとどうなりますか?
受け付けられません。桁数は4から1024までの整数で指定する必要があります。それより短いPINは、テスト用のデータとしても単純すぎるためです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/security/password-pin-seeded \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"length":6,"seed":"release-demo-2026"}'const res = await fetch("https://api.kit.forhosting.com/security/password-pin-seeded", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"length": 6,
"seed": "release-demo-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/password-pin-seeded",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"length": 6,
"seed": "release-demo-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/password-pin-seeded", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"length":6,"seed":"release-demo-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"length":6,"seed":"release-demo-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/password-pin-seeded", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"length": 6,
"seed": "release-demo-2026"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.password_pin_seeded",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 1024 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
必要なときに同じPINを再生成できます
lengthには4から1,024までの整数を、seedにはテキストを入力してください。
弱いパターンの報告を確認できます
結果にはPIN、桁数、元のシードに加えて、weakとweak_patternsが含まれます。該当した条件は、repeated_digits、ascending_sequence、descending_sequenceとして一覧に示されます。
決定論的なPINは適切な用途だけでお使いください
APIリクエスト1回の料金は$0.002です。
技術的な質問
桁数が4未満の場合はどうなりますか?
リクエストはinvalid_inputで失敗します。少なくとも4桁を指定する必要があります。
APIリクエスト1回の料金はいくらですか?
APIリクエスト1回は$0.002です。ブラウザー版では同じ純粋な決定論的アルゴリズムをローカルで実行します。