何とか庵日誌

本名荒井が毒にも薬にもならないことを書きつづるところ

続・ささやかな暗号化の話

日参サイト、Thunderboltさんのblogで暗号化の話をしていたので、ついでに便乗。
リスト入力時のネタバレを防ぐため、簡単なものであっても、
往時、プログラマーにとってテキスト暗号化は必須の技術だったという話を以前しましたが、
MSXの場合、ハードウェアの特徴を利用して、変わった暗号化をすることができました。
まずは次のスクリーンショットが原文。





で、次が暗号化した文。





非常に複雑な手順を踏んでいるように見えますが、
実はこの暗号、プログラム的な処理は一切していません。
どうしたかというと、漢字モードで書いた原文を、通常のテキストモードで表示しただけなのです。
MSXでは漢字ROMがあれば、CALL KANJI命令で漢字を扱うことができますが、
そうすると漢字モードに移行することになります。
つまり漢字モード以外では漢字フォントを表示できないわけでして、
通常のテキストモードで漢字モードで書いたテキストを表示しようとすると、
文字化けして正常に表示されないという現象が起きます。


ところが通常のテキストモードで文字化けしたテキストを打ち込み、
漢字モードで表示させると、正常なテキストを再現することができまして、
それをテキストの暗号化がわりに利用することができるのです。
必要な処理は「CALL KANJI」とせいぜい「CALL ANK」ぐらいのものでして、
ほとんどプログラム的な処理を必要としないという利点がありますが、
文字化け後のテキストは複雑で入力ししづらく、さらに誤字があった場合、
どこが間違っているのか特定しづらいという欠点がありました*1
さらにMSXの場合、漢字ROMを使ったゲームが作りづらかったこともあり、
この技はあまり一般的にならなかったように思われます。

*1:漢字モードにすれば一発でわかるが、それはネタバレを意味する。