回転暗号

回転暗号

中級

説明

シーザー暗号とも呼ばれる回転暗号を実装してみましょう。

シーザー暗号は、0から26までの整数の鍵を使って、アルファベットのすべての文字をずらす、単純なシフト暗号です。 鍵に0または26を使うと、剰余演算により、常に同じ結果になります。 文字は、鍵の値と同じ数だけずれます。

回転暗号の一般的な表記はROT + <key>です。 最もよく使われる回転暗号はROT13です。

ROT13をラテンアルファベットに適用すると、次のようになります。

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

回転暗号は、鍵の候補が27通りあり、そのうち使えるのが25通りなので、アトバシュ暗号よりも強力です。

暗号文は、スペースや句読点も含めて、入力と同じ書式で書き出されます。

例

  • ROT5はomgをtrlにします
  • ROT0はcをcにします
  • ROT26はCoolをCoolにします
  • ROT13はThe quick brown fox jumps over the lazy dog.をGur dhvpx oebja sbk whzcf bire gur ynml qbt.にします
  • ROT13はGur dhvpx oebja sbk whzcf bire gur ynml qbt.をThe quick brown fox jumps over the lazy dog.にします

レジスタ

レジスタ 用途 型 説明
$a0 入力 アドレス null終端された入力文字列
$a1 入力 整数 シフト量
$a2 入力/出力 アドレス null終端された結果文字列
$t0-9 一時 任意 一時的な保存用

出典

Wikipediaリンクは新しいウィンドウまたはタブで開きます
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
MIPS Assembly Exercism

回転暗号を始める準備はできましたか?

Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、MIPS Assemblyを学んでマスターできます。すべて無料です。