私の秘密の暗号
私は今、退屈なので秘密の手記を書いています、いえ、実を言えば自分で作った暗号化プログラムのテストのために書いています、本末転倒ですね。
テキストを暗号化するフィルタを作りました、コレで一応暗号化はできます、まあXORを取っただけなので本気になれば解読可能ですが……
どのみちただの一般人のPCをそこまで詮索する暇人もいないでしょうし問題ありません。それにしても排他的論理和を取るだけで暗号化と復号が両方できるって魔法のようですね。
パイプでプログラムに平文を渡して……っと、ちゃんと暗号化されてますね。
私は暗号化されたファイルにも同じことをして平文が復元できるのを確認する、オーケー、元の文になりました。
テキストファイルをcatで出力してパイプでプログラムに入れて出力をリダイレクト、元のファイルはshred diary.txtで跡形もなく消し去っておきました、元の文を残すほど間抜けではありません。
WSL上ではちゃんと暗号化も復号も可能になっていますし、Windowsに移植しちゃいましょうか! コレは楽しいですねえ……
……数時間後
「何ですかこの謎の文字は……」
私は机に突っ伏しています、それというのも暗号化すると謎の文字が入ることが原因ですアスキー文字ならいい方で、範囲外でエラーすら出ます……悪魔でしょうか?
「何なんですかこの文字? WSLではマルチバイト文字列もちゃんと動作したんですよ! MSがLinuxを使ったことに怒ってるんですか!?」
私がバイト列をイライラしながら睨んで数十分、解決の兆しは見えません。
終端文字がダメなのかと思い‘\0’を処理から外しましたがまだ出てきます。酷い嫌がらせですね。
「おにーちゃーん! 助けてくださーい!」
私はためらうことなくお兄ちゃんのところへ駆け込みます、ストロングなアルコールに逃げなかった自分を褒めてあげたいですね。
「はぁ……で、今度は何だ? シンタックスエラーならコンパイラを疑う前に自分を疑えよ? 実行時エラーならコアダンプは持ってきたか?」
「違いますよ! 謎の不具合に困ってる妹を助けようって気は無いんですか? ここは『お兄ちゃんに任せなさい』って言うところでしょう?」
お兄ちゃんは肩をすくめて言う。
「だってお前が持ってくるバグって面倒なのばっかじゃん、最低限ここのPCで再現はしないとなんとも言えないぞ?」
それはそうですけど……もう少し妹に対する態度ってものがあると思うのですが。
まあそれはさておき後でちょうきょ……指導するとして今はこの不具合が問題です。
「ここに謎の文字が入るんですよ! バグじゃないんでしょうか……?」
お兄ちゃんもASCIIコードに入ったり入らなかったりする謎の文字を見て考えている、しばらく沈黙した後で私に言った。
「コレ改行の前後に入ってるな?」
「へ!? あ、ああそうですね? そういえば改行している辺りに入ってますね」
改行がなんだというのでしょうか?
「WindowsとLinuxとMacOSで改行コードが違うことは知ってるか?」
「へ? 全部‘\n’じゃないんですか?」
「ロジック上はそうなんだがな……WindowsではCRLF、MacOSではCR、LinuxではLFになってる、改行コードはマルチプラットフォームにするとハマる穴の定番だからな」
お兄ちゃんはそう言いながら私が渡したUSBメモリからソースをVimで編集します。
「コレでどうだ?」
お兄ちゃんはそう言ってUSBメモリを渡してくれました、私は自分のノートPCに差し込んで中身をうつします。
ちゃんとMakefileまで作ってあります、至れり尽くせりですね。
makeでプログラムをコンパイルして実行します。
…………
「すごいです! ちゃんと動いてます! どうやったんですか?」
あいにく私にはVimで何かをしていたと言うこと以上のことは分かりませんでした、あれはエディタと呼ぶにはあまりにもわかりにくいと思うのですがね……
「ああ、単純に改行コードはそのまま出力するようにした。改行から文字数くらいは推測できそうだけどそんなガチの機関みたいなの相手にする暗号化でもなさそうだし十分だろ?」
お兄ちゃんは一体どこを相手に考慮しているんでしょうか……
「ありがとうございます! おかげで完成しました!」
「感謝されるほどのことでもないだろ、九割以上できてたじゃないか、俺は改行コードの処理を追加しただけだよ」
それでも私が必死になって分からなかった問題を解決してくれたのです、感謝もするというものでしょう?
「ありがとうございます、お礼はいつか必ず……」
「じゃあ自由を……」
「それはダメです」
お兄ちゃんははぁ……とため息をついて『どういたしまして』と言った。
私は部屋に帰って今回のことも含めて本日の手記に追加してまとめて暗号化しておきました。




