新しく質問する

Perlモジュールを使わずにsha256変換を使う方法

役に立った:0件
  • 質問者:kuzumiHK
  • 投稿日時:2009/06/20 10:39
  • 困り度:暇なときに回答をください

下記のPHPと同じ結果をPerlで出したいです。

■PHPデータ
<?php
// HMAC-SHA256
$hash = hash_hmac('sha256', hogedata, hogekey, 'true');
// BASE64エンコード
print base64_encode($hash);
?>

検索エンジンで調べたところ、
「Digest::SHA256」などのPerlモジュールを使用すれば可能なようですが、
新しいPerlモジュールをインストールする権限のないため、
直接、Perlに式を記述したいと思いました。

■Perlデータ(途中)
#!/usr/bin/perl
use MIME::Base64;
print "Content-type: text/html\n\n";
# HMAC-SHA256
~ここに変換式が入ります~
# BASE64エンコード
$enhash = encode_base64($hash);
print "$enhash";

PHPで書き直せば同じサイトを作ることは可能ですが、
できればPerlのままで継続したいです。
お分かりの方がいらっしゃいましたら、
ご教授いただけますでしょうか。
どうぞよろしくお願いいたします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:t-okura
  • 回答日時:2009/06/21 12:31

Digest::SHA256 は、C で書かれた部分があるので難しいですが、Perl だ
けで書かれた Digest::SHA::PurePerl であれば、CGI を設置したディレク
トリに例えば mycpan/Digest/SHA というディレクトリを作り、そこに
http://cpansearch.perl.org/src/MSHELOR/Digest-SH …
をコピーすればよいです。

使う時は
use lib qw( mycpan );
use Digest::SHA::PurePerl;
で設置したものを使用します。

通報する

この回答へのお礼

ご回答ありがとうございます。
ようやくPHPと同じ結果がでました。

#!/usr/bin/perl
use lib qw(../mycpan);
use Digest::SHA::PurePerl qw(hmac_sha256_base64);
print "Content-type: text/html\n\n";
# HMAC-SHA256
$hash = hmac_sha256_base64(hogedata, hogekey);
print "$hash\=";
exit 0;

普通のFTPでCPANをアップするという発想自体がありませんでした。
※テストしてみたところ最後に=(半角のイコール)がなかったため、
文字列として追加しました。
これでなんとかなりそうです。ありがとうございました!

  • 参考になった:0件
  • 回答者:t-okura
  • 回答日時:2009/06/20 22:12

> 新しいPerlモジュールをインストールする権限のないため、

CPAN モジュールはユーザ領域にもインストールできます。
システムに入っていなかったり、システムに用意されているものより
新しいバージョンのものを使いたかったりする場合は、自分用に
ユーザ領域にインストールすればよいです。

下記のウェブページは参考にならないでしょうか。
http://iandeth.dyndns.org/mt/ian/archives/000623 …

通報する

この回答へのお礼

ご回答ありがとうございます。
現在利用させてもらっているサーバは、
セキュリティの観点からTelnetもSSHも不可とのことでした。
ユーザ領域にインストールできるとは思っていませんでした。
Telnetが可能であれば簡単なコマンドは打てるのでよかったのですが。
やはりPHPで書き直すか契約変更しかないでしょうか。。
もう少し情報を待ってみたいと思います。
情報ありがとうございます。助かります。

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ