インフラエンジニアbacchiのわかったことまとめ

bacchi.me

PerlでROT13暗号文の復号

某サイトで以下の問題が出題されたのでPerlで解いてみた。

以下の暗号文を復号せよ。

---begine---
tbireazrag bs gur crbcyr, ol gur crbcyr, sbe gur crbcyr,
funyy abg crevfu sebz gur rnegu
---end---

解法

この問題の暗号方式?はROT13という単純な暗号で

A B C D E F G H I J K L M
| | | | | | | | | | | | |
N O P Q R S T U V W X Y Z

のように各文字をアルファベット順に13後の文字に置き換える。

trで置換してやればOK

ソース

#!/usr/bin/env perl

use strict;
use warnings;

my $word = shift;
print print_rot13_string($word) . "n";

sub print_rot13_string {
  $word =~ tr/a-zA-Z/n-za-mN-ZA-M/;
  return $word;
}

実行結果

$ perl  rot13.pl "tbireazrag bs gur crbcyr, ol gur crbcyr, sbe gur crbcyr, funyy abg crevfu sebz gur rnegu"
government of the people, by the people, for the people, shall not perish from the earth

government of the people, by the people, for the people, shall not perish from the earth

が答え。

リンカーンのゲティスバーグ演説の名文ですね。

  • B!