[Python] シーザー暗号化

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

前回、JavascriptとPHPで生合成の取れたシーザー暗号化プログラムを作りましたが、サーバーサイドでPython版も作っておきました。
 

データをシーザー暗号化でまあまあセキュアな通信を行えるJSとPHPの互換コードを作ったよ
 

シーザー暗号化については、前回の記事を読んで理解してもらえると思うんですが、サーバーサイドプログラムにおいてPythonが有効である理由を見つけました。
 

サーバーサイドプログラムでPythonが有効な理由について

最新のOSでは、Windowsを除く、MacOSやLinuxなどにおいて、デフォルトでPythonがインストールされています。
 

余談ですが、Windowsは本当に残念なOSなので仕方がないのですが、こうした世の中の主流に乗れないでいるので、どうしても下火になりつつありますよね・・・
 

LinuxやUnixをWEBサーバーにするケースは少なく無く、そうしたOSでshellやbash、awkと言った、古くから存在するスクリプトコードは、ターミナルでも、プログラム化しても、非常に便利に使えるのですが、どれも、複雑なシステムを作るのには向いていません。
 

それに、今時ではAIに強いPythonがデフォルトで加わったというのであれば、それを活用しない手はないでしょう。

シーザー暗号化コード(python2系版)

シーザー暗号化コード(python3系版)

簡単解説

コメントの#test以降は除外してライブラリとしてお使いくださいませ。
 

Pythonのクラス記述があまり慣れていなかったので、self引数をつけずに、受け渡し個数が合わないエラーに悩まされていましたが、Pythonにおいて、class内の受け値で必ずselfを付けるというお作法を初めて知りました。(お恥ずかしい話ですが・・・)
 

ソースコード自体は意外とシンプル構成で、下記の手順で行なっている。
 

1. 文字列をurl文字エンコードにするのは、全角と記号に対応する為
2. url文字エンコードされた文字列を一文字ずつ、キャラクターコードを取得し、それに任意のkey値を足し込んで行く
3. 足し込んだ数値をキャラクタ変換すればエンコードが完了
4. デコードは、一文字ずつのキャラコードからエンコードしたkey値を引いてあげる。
5. それをキャラクタ表示
6. 最後に、url文字デコードすれば、復元完了
 

全部一緒に解説したが、読める人は、簡単に理解できると思います。
全てが半角英数字であれば、費やすデータ容量(バイト数)は変わらないのですが、全角などが入ると、2〜3倍ぐらいに膨らむので、ここから圧縮をかけるかどうかはご判断ください。
 

ちなみに、v2とv3の違いは、「urllib」を「urllib.request」に変更するだけでした。

余談

ちなみに、今回PHPプログラムから、関数のローカライズを行なってみましたが、PHPからPythonに対応できる、関数変換ページを見つけたので、ここがかなり便利にできていたため、ご紹介します。
 

PHP >>

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です