string str_rot47(string $str)
引数 str に対して ROT47変換を施し、 その結果の文字列を返します。
ROT13変換がアルファベット26文字を対象にしているのに対し、ROT47変換は、アルファベットの大文字・小文字52文字+数字10文字+記号32文字の計94文字を対象とします。
ROT13変換と同様に、変換対象外の文字は元のままとなります。
ROT13は単換字式暗号の一つで、「Rotate by 13 places」の略です。ROT47はその亜種です。シフト暗号とも呼ばれます。
また、古代ローマの軍事的指導者ユリウス・カエサル(ジュリアス・シーザー)が 初めて使ったとされていることから、カエサル暗号・シーザー暗号とも呼ばれます。 もっとも有名で、きわめて単純かつ原始的な暗号と言えます。
ちなみに映画「2001年宇宙の旅」に登場するコンピューター「HAL」の名は、 「IBM」を1文字ずつもどしてずらしてつけられたといわれています。
「日本語の文字列をすべて23ずつずらして別の文字に変換する」日本語版の ROT47変換なるものがあるという説明をするWeb辞書サイトが存在します。 しかし、実際にはそのような変換手法は存在しません。
そもそもROT47は「47文字ずらす」という意味ですので、それを 「23文字ずらす」と解釈している時点で根本的に間違っています。 さらに、47文字を対象とし23文字ずつずらす変換を2度行っても 元の文字列に戻るわけがありませんので、二重に間違っているといえます。
function str_rot47($str) { return strtr($str, '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~', 'PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO' ); }
このページに関するちょっとした感想または、要望、バグ・間違いの指摘などは、下記の送信欄からお送りください。 質問・その他お問合せなど、返信をご希望の方は「こちらのページ」からメッセージをお送りください。
「このページはお役に立ちましたか?」のアンケートと自由メッセージのどちらか一方でかまいません (両方だとよりうれしいです)。お気軽にご利用ください (感想・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)。