• ベストアンサー

perlで可逆な暗号化

perlで、どうしてもパスワードをGETで送る必要があります。 通常は、cryptを使用して暗号化するのだと思いますが、 cryptは不可逆なので使用したくありません。 perlを使用して、可逆で、できる限り簡単に暗号化する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

可逆暗号化もいろいろありますが Crypt::RC4はどうでしょうか。 エンコード、デコード共に1行でできます。 当然共通のパスフレーズが必要となりますが・・・

参考URL:
http://search.cpan.org/~sifukurt/Crypt-RC4-2.02/RC4.pm
workpad30j
質問者

お礼

ありがとうございます。 簡単ですね。助かりました。

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

まあとりあえずCPANで検索かければ(暗号なので"Crypt"が付くモジュール)その手のモジュールは結構ヒットするわけですが http://search.cpan.org/search?query=Crypt&mode=module 私が良く利用するのは Crypt::CBC + Crypt::Blowfish とか Crypt::CBC + Crypt::Rijndael とか etc... CBCとは http://www.ss.iij4u.or.jp/~somali/web/_block_mode.html を参考に (暗号アルゴリズムのモジュールのみだと、ブロックの大きさで制約がありますからCBCなんかと組み合わせるのが普通です) どれほどの強度を求めるのか、暗号化・復号化に使う共通鍵をどう管理するかが鍵になります。 まあ、共通鍵はスクリプト内で指定しておくだけになると思いますが。 ちなみにお尋ねしますが、GETで送るっていっても単にperlスクリプトが生成したページ上のリンクが「http://~/hoge.cgi?password=パスワード」ってなっててそれをクリックするような用途ですよね? まさかページ上のフォームで入力したものをGETでスクリプトに送るときに暗号化したいなんて言いませんよね? (それだと暗号化はクライアントつまりブラウザ側でしなきゃいけないのでまず無理になります)

workpad30j
質問者

お礼

今回は、#1さんの方法を使わせていただきますが、時間があるときに、お教えいただいた方法も試してみたいと思います。 ありがとうございました。

workpad30j
質問者

補足

>まさかページ上のフォームで入力したものをGETでスクリプトに送るときに暗号化したいなんて言いませんよね? それはないです。 用途として、perlで生成したフォームにパスワードを入力してもらい、それを 「print"Location:~ 」で別のスクリプトに飛ばすときに使用します。 GETの場合、ブラウザのアドレス欄にパスワードそのものが表示されてしまい、ユーザーが見たら気分悪いのだろうな、ということで暗号化しようと考えました。

回答No.2

APOPみたいにするか、または PGP のように公開鍵暗号方式でやればいいと思いますよ。APOPの方法は不可逆ですが、同じ値が転送されることはまずないので途中でパケット見られてもあまり心配する必要はありません。PGPの場合は可逆ですが送り先の相手の公開鍵が分からないと暗号化はできません。 p.s. APOPと似たような方法を使うとしてもMD5はやめといた方がいいかも知れません。MD5は既に死んでるようです。 http://slashdot.jp/security/article.pl?sid=05/11/18/0125251

参考URL:
http://www.puni.net/~mimori/relay/apop.html,http://gnupg-interface.sourceforge.net/
workpad30j
質問者

お礼

今回は、#1さんの方法を使わせていただきますが、時間があるときに、お教えいただいた方法も試してみたいと思います。 ありがとうございました。

関連するQ&A