シーザー暗号を解く、といっても、解いた結果が正しいかどうか、どうやって判定します?
例えばですが「ABC」という文字列を「HIJ」とシーザー暗号で暗号化したとして、これを「XYZ」や「NOP」という平文に戻すこともできます。
まあそういうのは無視してただ文と鍵が与えられたときに暗号化する(復号は鍵が逆になるだけなので同じ処理になります)、のであれば、
- C# の char は short と相互に明示的に型変換できる
ので、
C#
1function string caeser(string s, short k) {
2 StringBuilder sb = new StringBuilder();
3 for(int i=0; i<s.Length; i++) {
4 short c = (short)s[i];
5 c += k;
6 sb.Append((char)c);
7 }
8 return sb.ToString();
9}
こんな感じですかね。
実際には使える文字コードの範囲とか考えなくてはいけない場合もありますが。
余談:昔々、これをちょっと応用した簡易な暗号として ROT13 というのがあったのですよ。さらにジョークで ROT26 というのも(w
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。