マイナンバーカード用パスワード発行プログラム ソースと解説

数年前にマイナンバーカードの申請書が届いていたのですが、どうやら写真を貼付しないといけないようなのです。そのうち撮ろうと思いつつ、ついついそのままになっていて、その郵便物もどこかに失せていました。

ところが、なかなか手続きをしないせいか、督促状のように再度申請書が届いたので、いやいやながら写真を撮って来て申請書を送りました。

それからしばらくしたら、今度は半年以内に区役所に受け取りに来なさいとの通知が届きました。しかも、インターネットで事前予約してからということ。さらに、二つのパスワードを用意して行き、登録することになるという案内が書いてありました。

というわけで、今回はこの二つのパスワードを自動発行するプログラムを作ることにします。

ちなみに、なぜ二つのパスワードが必要なのかは何も書いていないので不明ですが、後に使うことになりそうですね。自動車運転免許証更新のときにも二つのパスワードを登録したら、後に記載印字表発行時に必要でしたから。

プログラム言語 十進BASIC

パソコンで簡単に作れる物というと、以前はDOSベースのBASICがありましたが、今や、Windowsの時代です。そこで、以前も使ったことのある。十進BASICを使うことにしました。もちろんこれもコンパイル不要のインタープリター型です。

これは十進BASICのホームページから無料でダウンロードできます。

文法は十進BASICヘルプ Windows版で解説されています。

要件

パスワードは二つで、以下の要件が指定されています。

  1. 英数字(大文字)の組み合わせ(6〜16桁)
  2. 数字4桁

プログラム・ソース

以下のソースをそのまま十進BASICにコピペすると使えます。

解説

ほとんどソースの中に注釈を入れてありますが、足りない部分をあげておきます。

  1. omoji$(大文字):Oはゼロと紛らわしく、Iは1と紛らわしいので使いません。
  2. suuji$(数字):0はオーと紛らわしいので使いません。
  3. DECLARE EXTERNAL FUNCTION password$:パスワードを発生させる部分は、第一パスワードと第二パスワードのふたつとも同じ動作なので、外部関数として定義します。
  4. SET ECHO "OFF":入力画面の文字を出力画面に表示しないようにします。
  5. LET nagasa = 6 + INT( 11 * RND ):パスワードの長さを6文字から16文字まで乱数で決めます。ちなみにRNDはゼロから1未満の数になります。また、INTは整数を取り出す関数です。
  6. 文字数=";LEN(pwd_1$):念のため第一パスワードの文字数を表示します。
  7. EXTERNAL FUNCTION password$( moji$ , nagasa ):外部関数の引数は文字列と文字数の二つで、結果としてパスワードを返します。
  8. MID$( moji$ , ichi , 1 ):moji$のichi番目の文字から1文字を返す関数です。これはDOS時代にもよく使っていた関数でした。

実行画面

実行すると、このように結果が表示され、入力プロンプトウィンドウでnを入力すると、何度でも繰り返してパスワードを発行させることができます。

逆スクロールすれば以前の表示をさかのぼって見ることもできます。

2021年5月30日 記