セキュリティフォントとかいうのが話題になってましたね。 実はあれは単純なシーザー暗号じゃないらしい(マイナンバーごとにテーブルを変えている)とかいう話もあるんですが、単純なシーザーだと思ったときじゃあ何個マイナンバーを集めれば復号化できるかな?と思ってHaskellでプログラムを書いてみました。 予想 チェックディジットを通る確率はざっくり10分の1で、テーブルはだいたい10! ~ 107個候補があるので、まあ7,8個くらいあれば一意に定まるんじゃないかという予想。 コード コードはここにぶっこみました。 GitHub - hajifkd/securefont 説明 流石にUTSLすぎワロタな記事になっていたので追加。 以下のコードでは、適当にマイナンバーを作って適当なキーで暗号化しています(encode.hs)。 それを総当りで復号化するのがdecode.hsです。どちらも普通にコンパイ