C言語で、ポリュビオス暗号を使って文字を暗号化、復号するプログラムを作りたいです。
ポリュビオス暗号表はファイルに保存、読み込んで使います
どうやってつくればいいかなやんでいます
もしよければ、参考に教えてくれませんか
ポリュビオス暗号化
Re: ポリュビオス暗号化
好きなエディタ(IDEを含む)でプログラムを書き、好きなコンパイラでコンパイルすればいいでしょう。ららら さんが書きました:どうやってつくればいいかなやんでいます
なやむよりまずは手を動かして出来るところまで書いてみることをおすすめします。
何を教えてほしいのでしょうか?ららら さんが書きました:もしよければ、参考に教えてくれませんか
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ポリュビオス暗号化
Wikipedia にあるように ”例えば「AND」を暗号化するときは「11 33 14」とする ” のであれば A と 11 が1対1に対応しており 配列”ABCDEFGHIKLMNOPQRSTUVWXYZ" と 配列 11,12,13,14,15,21,22,・・・ の位置を検出するだけであり簡単である と 思いますが・・・。
Re: ポリュビオス暗号化
ポリュビオス暗号とは単一換字式暗号の一種の様ですね。
詳細な仕様が分かりませんので何とも言えない部分はありますが、ポリュビオスの暗号表なる物を使用するという点では、使われる文字の種類の平方根が整数になる文字種にした場合に、文字の表現効率が最大になるとは考えられるでしょう。
まず、その使われる文字の種類という点で疑問は有りますが、文字情報は全て2進数で表現可能である事を利用し、理論上どの様な2進数データでも、ポリュビオス暗号化出来る様にする事は可能とは言えます。
例えば、文字(ブロックのパターン)数の平方根が整数になるようなビット数。
まず、√(4)=2ですよね?
つまり、2bitを1ブロックとして暗号化する様にすれば、ポリュビオスの暗号表は正方形に出来ますよね?
しかし、2bitだと、現状のコンピュータ上では扱いにくいと言えるでしょう。(1byte単位では無い為。)
そう考えると、√64=8bit=1byteとなる為、0x00~0xFFまでの要素を持つ、8×8のポリュビオスの暗号表を作成し、その表を使って換字を行えば宜しいのではないかと思います。
因みに、この場合、ポリュビオスの暗号表の規模を大きくすればする程、暗号強度は高くなる傾向はあるとは言えるでしょう。(例えば16×16の暗号表にする等。)
詳細な仕様が分かりませんので何とも言えない部分はありますが、ポリュビオスの暗号表なる物を使用するという点では、使われる文字の種類の平方根が整数になる文字種にした場合に、文字の表現効率が最大になるとは考えられるでしょう。
まず、その使われる文字の種類という点で疑問は有りますが、文字情報は全て2進数で表現可能である事を利用し、理論上どの様な2進数データでも、ポリュビオス暗号化出来る様にする事は可能とは言えます。
例えば、文字(ブロックのパターン)数の平方根が整数になるようなビット数。
まず、√(4)=2ですよね?
つまり、2bitを1ブロックとして暗号化する様にすれば、ポリュビオスの暗号表は正方形に出来ますよね?
しかし、2bitだと、現状のコンピュータ上では扱いにくいと言えるでしょう。(1byte単位では無い為。)
そう考えると、√64=8bit=1byteとなる為、0x00~0xFFまでの要素を持つ、8×8のポリュビオスの暗号表を作成し、その表を使って換字を行えば宜しいのではないかと思います。
因みに、この場合、ポリュビオスの暗号表の規模を大きくすればする程、暗号強度は高くなる傾向はあるとは言えるでしょう。(例えば16×16の暗号表にする等。)
Re: ポリュビオス暗号化
>そう考えると、√64=8bit=1byteとなる為、0x00~0xFFまでの要素を持つ、8×8のポリュビオスの暗号表を作成し、その表を使って換字を行えば宜しいのではないかと思います。
訂正です。
1byteで表現可能なブロックのパターン数は2^8=256であり、√256=16×16の暗号表になります。
失礼いたしました。
訂正です。
1byteで表現可能なブロックのパターン数は2^8=256であり、√256=16×16の暗号表になります。
失礼いたしました。