我有以下数据库
`database`
id | domain | db_user | db_pass | db_name
------------------------------------------------------
1 | domainone.com | root | root | domain_one
// MORE DATABASES HERE当我访问domainone.com时,选择domainone.com的数据库信息并连接到新的数据库。
问题是,我如何“安全”密码,哪个是原始模式?
更新
我想知道如何存储允许您访问数据库中的其他数据库的密码。所以,我不能散列和验证哈希,正如我所知道的。
发布于 2012-12-03 19:03:42
将结构更改为:
`database`
id | domain | db_user | db_pass | pass_iv | db_name
------------------------------------------------------
1 | domainone.com | root | root | ....... | domain_one
// MORE DATABASES HERE附加列pass_iv将保存用于加密该特定密码的IV。
下面是一些比使用MySQL的加密函数更安全地执行加密和解密的示例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此时,将$encrypted密码与用于加密密码的$iv ( pass_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-03 18:35:55
在将散列算法保存到数据库中之前,应该应用哈希算法。
要检查密码,只需应用相同的算法,并对存储在DB中的散列进行检查。
确保你选择了一个好的算法和盐值!
发布于 2012-12-03 18:39:51
您可以使用md5加密您的密码并保存在数据库中。当您检查密码密码时,输入的密码将与数据库中的密码进行比较。
https://stackoverflow.com/questions/13689465
复制相似问题