2008年05月23日

[PHP]PEAR::Crypt_Blowfishで可逆暗号化

久しぶりの投稿です。
最近ネタはあっても書き込むのがめんどくさいw


久々のネタは暗号化
やっぱり、パスワードとかは暗号化したいもの。
いつもは不可逆な暗号化で暗号化済みのものと比べてますが、
今日は暗号化済みのものから復号化の必要がありました。

まぁそんな本気の暗号化は必要ないのですが、最近PEARに興味が出てきたのでCrypt_Blowfishを使ってみることに。

ネットを見ながら適当にインストールして、サンプルを実行してみる。


<?php
require_once 'Crypt/Blowfish.php';
// 暗号化キー
$key = 'hoge';

//暗号化するデータ

$data = "ぱすわーどとか";
// 暗号化処理
$blowfish = new Crypt_Blowfish($key);
$enc = $blowfish->encrypt($data);

//復号化
$dec = $blowfish->decrypt($enc);


print $dec;//ぱすわーどとか が表示される、はず。

?>



が、復号化が正しく出来ない。
何度か文字列を変えて試したがだめだ。
一応複合化は出来ているんだが、復号化された文字列に暗号化前のデータ以外のバイナリがくっついてる。

「123」を暗号化-復号化すると「123***」となる(*のところは何かのバイナリデータ)

困った
困ったときのGoogle先生にたずねてみる。

見つけましたよウノウラボさん
http://labs.unoh.net/2007/11/php_de_crypt.html

Base64エンコード&デーコードをすればよさげ
さくっと変更


<?php
require_once 'Crypt/Blowfish.php';
// 暗号化キー
$key = 'hoge';

//暗号化するデータ

$data = "ぱすわーどとか";
// 暗号化処理
$blowfish = new Crypt_Blowfish($key);
$enc = $blowfish->encrypt((base64_encode($data)));

//復号化
$dec = $blowfish->decrypt($enc);


print base64_decode($dec);//ぱすわーどとか が表示される、はず。

?>



成功!
しかし、エンコードしないと上手くいかないのは何故だろう。
文字コードの関係だろうか。

[追記]
なにやら後ろにくっついていた謎のバイナリは、暗号化時のバイト数をそろえるために付加されたものらしい。
http://d.hatena.ne.jp/shimooka/20071108/1194449912
posted by Belial at 13:49 | Comment(2) | TrackBack(1) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
$enc = $blowfish->encrypt((base64_encode($data));

ここ間違ってますよ
Posted by at 2008年08月21日 10:55
ありがとうございます。
)が抜けてましたので修正しました。
Posted by Belial at 2008年10月12日 23:54
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

【文字コード】についてブログでの検索結果から見ると…
Excerpt: 文字コード をサーチエンジンで検索し情報を集めてみると…
Weblog: おまとめブログサーチ
Tracked: 2008-05-24 00:44
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。