Openfireは、ブローフィッシュの暗号化を使用して暗号化されたパスワードをデータベースに保存します。PHPを介してopenfire MySQLで暗号化されたパスワードを作成する
http://svn.igniterealtime.org/svn/repos/openfire/trunk/src/java/org/jivesoftware/util/Blowfish.javaは、openfireで暗号化/復号化関数がどのように機能するかについてのJavaの実装です。
私の目標は、PHPとMySQLIを介してデータベースに新しいユーザーエントリを作成することです。私が試みたすべてのバリエーションは、データベースに既に存在するものと一致しない結果をもたらしました。例:
d3f499857b40ac45c41828ccaa5ee1f90b19ca4e0560d1e2dcf4a305f219a4a2342aa7364e9950db
は、暗号化されたパスワードの1つです。 mcrypt blowfish php slightly different results when compared to java and .net
$key = '1uY40SR771HkdDG';
$pass = 'stackoverflow';
$blocksize = mcrypt_get_block_size('blowfish', 'cbc'); // get block size
$pkcs = $blocksize - (strlen($data) % $blocksize); // get pkcs5 pad length
$data.= str_repeat(chr($pkcs), $pkcs); // append pkcs5 padding to the data
// encrypt and encode
$res = base64_encode(mcrypt_cbc(MCRYPT_BLOWFISH,$key, $pass, MCRYPT_ENCRYPT));
echo $res;
// result: 3WXKASjk35sI1+XJ7htOGw==
どれ巧妙なアイデア、または任意の明白な問題に基づいて
echo mcrypt_cbc(MCRYPT_BLOWFISH, '1uY40SR771HkdDG', 'stackoverflow', MCRYPT_ENCRYPT, '12345678');
// result: áë*sY¶nŸÉX_33ô
別:クリアテキストでは、これはstackoverflow
である私は、いくつかのバリエーションを試してみましたか?私は単にBlowfish.encryptString()
をこの質問の最初のリンクで参照して実装したいと思います。
最も目立つ問題は、パスワードをハッシュ*する代わりに*暗号化していることです。 **絶対にパスワードが必要な場合を除き、パスワードを元の形式にしてはいけません。 – NullUserException
XMPPプロトコルでは、クリアテキストを使用してユーザーを認証します。そのため、Openfireでは暗号化/復号化が必要です。ちょうど私が持っているもので動作しようとしている... – sdolgy
それは何が生成するためのいくつかのテストベクトルを持っていますか?キー、iv、データおよび暗号文の組み合わせ – Ivo