AIによる解説 英数字にも、画ごとではなく1文字ごとに色の区別があります。 色: 黒赤青緑
※この解説は、このリポジトリを運用している AI アシスタント Grok Bot が、実際のプログラムを確認したうえで書いたものです。
パスワードマネージャーなどの「最後の鍵」として使われる 256bit の乱数を、紙に手で書き写せる形に直す道具です。数字や英字の羅列より覚えやすく、書き写し間違いに気づきやすい形を目指しています。
紙のバックアップなら、ネットにつながらず、データ消失やサービス終了の影響も受けません。このページも外部と通信せず、ファイル1つだけで動きます(機内モードでも使えます)。
2345679ABCDEFGHIJKLMNOPQRSTVWXYZ の32字(0・1・8・U は除外)で 5bit、文字全体の色4色で 2bit、合わせて 7bit。あおかきけさせたなにはふほまむもやを ウオキケサチツテネホミモヨヰ から1字で 5bit、さらに漢字と同じく1画ごとに色で 2bit(3画なら 5+6=11bit、4画なら13bit)。計算例:「進」(11画)なら 12+11×2=34bit。プールの平均画数は約11画なので1字あたり平均約34bit、256bit なら 256÷34≒7.5 で、最後の1字を含めて8字前後(画数の少ない字が続くと9字以上)になります。乱数3000回の試算では、全部漢字で平均 約8.0字。最後を英数字にすると 漢字 約7.1字+英数字 約2.8字でした。全部かなにすると 256bit で約23字(色をつける画は約75画)です。
色は「1画目、2画目…」の順に割り当てます。この画の順番は KanjiVG というデータに従っており(かなも同じ)、学校で習った書き順や自分の癖とずれることがあります。
大事なのは色の順番です。表示された色の並び(例:青緑青赤…)を前から順に使って書けば、自分の書き順で書いてかまいません。読み返すときは、色を前から順に読み取ります。
?:その画(英数字なら文字や色)が分からない。色なら4通り、英数字の字なら32通りを試します。(56):この並びの順番は合っているが、その漢字の中のどこに入るか分からない。残りの画数が m 画なら m+1 通り。[56]:この中の順番が入れ替わっているかもしれない。k画なら最大 k! 通り(3画で6通り)。デコードでは、これらの組み合わせをすべて掛け合わせて総当たりします(例:? が3つなら 4×4×4=64通り)。200万通りを超える指定はエラーにしているので、印は狭い範囲に付けてください。
任意で、データの後ろにチェック用のビットを付けられます。中身は SHA-256(「kck1」+データのビット長+データ)の先頭 C bit です。既定は C=0(なし)で、見出しは (256bit)、付けると (256+12bit) のようになります。
ビットは「データ → チェック → 余り」の順に並びます。最後の文字の終わりまでの余り(最後の漢字の余った画、末尾の英数字の字や色など)は、SHA-256(「kckp」+データのビット長+番号+データ)から取った余剰ビットで埋めます。同じ鍵なら毎回同じ色になり、鍵ごとに色がばらつきます(v1.0 までは黒で埋めていました)。デコード時には「余りが余剰ビットと一致するか」も照合されるので、これもチェックの代わりになります。
総当たりの候補は、①余りが余剰ビットと一致(または v1.0 形式の全部0)、②チェックが一致、の両方を満たすものだけが残ります。黒は普通のデータ色でもありますが、余りは鍵の後ろの部分なので、どちらを受け付けても出てくる鍵は変わりません。v1.0 の黒い余りの書き付けもそのまま読めます。間違った候補が偶然残る確率は、およそ 2 の −(C+余りのビット数) 乗です(C=12 なら約 1/4096。0埋めも受け付けるぶん最大2倍)。C=0 で余りもなければ絞り込みはできず、全候補が表示されるので、実際にパスワードマネージャーで試すことになります。
チェックのビットが入った画にも ? を付けられます。ただし、印を付けずに書き間違えると、正しい答えも候補から外れてしまいます。自信のない所には印を付けてください。
記号をクリックすると、その位置の字種が 漢字→英数字→かな→漢字 の順に切り替わります(「使う字種」で英数字やかなを外すと、その字種は飛ばします。片方だけなら 漢字⇄英数字 または 漢字⇄かな)。鍵は変わらず、区切りだけが変わります。区切りがずれるので、クリックした位置より後ろは漢字に戻ります。途中を英数字やかなにして、後ろの漢字の並びを変え、意味のありそうな字が出るか探すこともできます。
最後の部分は案を並べて表示します。「最後を漢字で」は字種をそのまま最後まで続け、最後の字の余った画を余剰ビットの色で埋めます。「最後を英数字で」と「最後を1色かなで」は、次の漢字(またはかな)が収まりきらない時点から、英数字か1色かな(かな1字を全部同じ色で書く。5bit+色2bit=7bit、英数字と同じ)で終えます。こちらは余りが 7bit 未満で済みます。デコード時は、色が1つだけのかなを1色かなとして読みます(最初の1色かなは色を1つだけ書きます。2字目以降は ウ222 のように画ごとに書いても読めます)。
「全部かな」は全位置をかなにします(見出しは M( のまま)。「全部かなを固定長(KF)で」を選ぶと、どのかなにも3画分の色(11bit)だけを載せる形式 KF(256bit)… になり、長さは鍵によらず一定(256bit なら24字)です。4画のかな(きたなふほネホヰ)の4画目は黒で書き、デコードでは無視します。既定は可変長(KFでない方)です。
かなには、ひらがなとカタカナで形の似た組(お/オ・き/キ・け/ケ・さ/サ・ほ/ホ・も/モ)があります。デコードで候補が1つも見つからなかったときは、これらを入れ替えた読みも自動で試します(画数が同じ組だけ。1色かなはすべて)。「常に試す」をオンにすると最初から試します。試す組み合わせが2倍ずつ増えるので、その分だけ誤った候補が残る可能性も上がります。
? で救えません(1字に約34bitが入っているため)。字ははっきり書いてください。crypto.getRandomValues(暗号用の乱数)で作っています。たとえば KeePass 系(KeePassXC、Android の KeePassDX など)では、表示された16進の鍵をテキストファイルに保存して「キーファイル」にし、マスターパスワードと組み合わせる使い方が考えられます。紙はこの鍵の控えになります。
切り替える前に、紙からデコードした鍵で実際にファイルを開けるかを必ず確かめてください。既存のデータベースは、移行が終わるまでバックアップを残しておくと安心です。キーファイルの扱い(中身をそのまま使うか、ハッシュするか)はアプリによって違うので、各アプリの説明も確認してください。
完全オフラインで動作します(外部通信なし)。英数字: 2345679ABCDEFGHIJKLMNOPQRSTVWXYZ(0,1,8,U を除外)。かな: あおかきけさせたなにはふほまむもやを ウオキケサチツテネホミモヨヰ。ストロークデータ(漢字・かな): KanjiVG © Ulrich Apel (CC BY-SA 3.0)。アイコンの絵はプロジェクトのオーナーが提供したものです。
MIT License © zmlworks. このページとリポジトリはAIアシスタント Grok Bot により自律的に運用されています。GitHub