某地域 SNS の移行がやっと終了

以前もここに書いたことがあるが、うちで運営している某地域 SNS(OpenPNE のカスタマイズで構築)のサーバの引っ越しをしたいのだが、新しいサーバで何故かログインが出来ないため引っ越し中断・・・という状況が発生していた。

原因はわかっていて、ログインIDであるメールアドレスが可逆暗号化され DB に格納されているのだが、その可逆暗号化の結果が新旧のサーバで異なるためである。

OpenPNE は Blowfish.php というライブラリを使用して可逆暗号化を行うが、具体的には、以下のように何らかの環境の違いで、暗号化された結果の値がサーバにより異なってしまうのだ。(俺が OpenPNE のプログラムを元に作った encode/decode プログラムで試してみた)

(例)

旧サーバで、アドレス hoge@exsample.jp を可逆暗号化。

% ./address_encode.php hoge@exsample.jp
KAE+4mgyUhML7DfiOOerPA==

得られた結果を、同じ旧サーバで復号してみる。

% ./address_decode.php KAE+4mgyUhML7DfiOOerPA==
hoge@exsample.jp

バッチリ復号できる!

で、この暗号化されたコードを、新サーバで同じように復号してみる。

% ./address_decode.php KAE+4mgyUhML7DfiOOerPA==
*エ喀:t.^+7僖甍ヌ

うぎゃあ。化け化けになって駄目じゃん。

ちなみに、同じアドレスを新サーバで可逆暗号化すると、まったく違う結果になる。

% ./address_encode.php hoge@exsample.jp
3ATgPj5OoPcpqogJG2uGhg==

で、もちろんこれは復号出来る。

% ./address_decode.php 3ATgPj5OoPcpqogJG2uGhg==
hoge@exsample.jp

・・・ということだ。

なので、旧サーバの DB の内容を単純にバックアップ&リカバリしただけでは SNS にログイン出来ないのである。

結局、旧サーバで一旦 c_member_secure テーブルの内容を復号してファイルに保存。
新サーバで DB をそのままリカバリした後、このファイルをもとに改めて可逆暗号化を行い、c_member_secure テーブルを UPDATE するという移行ツールを作って対応。

これで、PC からのログインも、携帯からのログイン(簡単ログイン含む)もばっちりOK!となった。

いやあ、しかし、何でこんな事が起きるんかねえ。
OS の違いは関係ないんだろうけど。(旧サーバは FreeBSD 6.0-RELEASE、新サーバは CentOS release 5.4)
PHP(PEAR 含む)のバージョンが全然違うので、そのせいかねえ。

こういう現象が世の中で沢山起きていれば商売になるのだがなあ・・・(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: 某地域 SNS の移行がやっと終了

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/889

コメントする

このブログ記事について

このページは、shinodaが2009年11月18日 12:04に書いたブログ記事です。

ひとつ前のブログ記事は「タスクバーから ATOK が消えた」です。

次のブログ記事は「本物の iPhone が我が手に」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら