2

次のデータベースがあります

`database`
id | domain        | db_user | db_pass | db_name
------------------------------------------------------
1  | domainone.com | root    | root    | domain_one

// MORE DATABASES HERE

にアクセスするdomainone.comと、domainone.com のデータベース情報を選択し、新しいデータベースに接続します。

問題は、現在生モードになっているパスワードをどのように「安全」にできるかということです。

アップデート

他のデータベースにアクセスできるパスワードをデータベースに保存する方法を知りたいです。したがって、私が知っているように、ハッシュをハッシュして検証することはできません。

4

4 に答える 4

3

構造を次のように変更します。

`database`
id | domain        | db_user | db_pass | pass_iv | db_name
------------------------------------------------------
1  | domainone.com | root    | root    | ....... | domain_one

// MORE DATABASES HERE

追加の列には、その特定のパスワードを暗号化するために使用されるIVpass_ivが保持されます。

以下は、MySQL のAES_ENCRYPT関数を使用するよりも安全な方法で暗号化と復号化を行うサンプル PHP コードです。

<?php

$mysqlPass = '12345thispassword$'; // this is the password you want to store

$key    = 'this is a secure secret key...';  // a secure secret key for encryption
$cipher = MCRYPT_RIJNDAEL_256;
$mode   = MCRYPT_MODE_CBC;

$keysize = mcrypt_get_key_size($cipher, $mode);
$ivsize  = mcrypt_get_iv_size($cipher, $mode);
$iv      = mcrypt_create_iv($ivsize);  // create random IV for encryption

$encrypted = mcrypt_encrypt($cipher, $key, $mysqlPass, $mode, $iv); // encrypt pass

この時点で、パスワードを ( columnn に)暗号化するために使用されるパスワード$encryptedと共にデータベースに挿入します。$ivpass_iv

復号化するには:

$key    = 'this is a secure secret key...';  // a secure secret key for encryption
$cipher = MCRYPT_RIJNDAEL_256;
$mode   = MCRYPT_MODE_CBC;
$keysize = mcrypt_get_key_size($cipher, $mode);

// read password info from db...this includes the encrypted pass and pass_iv

// put encrypted password into $encrypted, put pass_iv into $iv

$decrypted = mcrypt_decrypt($cipher, $key, $encrypted, $mode, $iv);
$decrypted = rtrim($decrypted, "\0");

// decrypted is now the plain-text database password.

それが役立つことを願っています。

于 2012-12-03T19:03:42.850 に答える
-1

md5 を使用してパスワードを暗号化し、データベースに保存できます。パスワードを確認すると、フォームに入力されたパスワードが暗号化され、データベースのパスワードと比較されます。

于 2012-12-03T18:39:51.247 に答える
-1

ここでは、MySQL でのパスワード ハッシュのしくみについて説明します - http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

于 2012-12-03T18:40:59.183 に答える
-1

データベースに保存する前に、ハッシュ アルゴリズムを適用する必要があります。

パスワードを確認するには、同じアルゴリズムを適用して、DB に保存されているハッシュと照合するだけです。

適切なアルゴリズムとソルト値を選択してください!

于 2012-12-03T18:35:55.203 に答える