首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中保护mysql密码

问在数据库中保护mysql密码
EN

Stack Overflow用户
提问于 2012-12-03 18:32:32
回答 4查看 117关注 0票数 2

我有以下数据库

代码语言:javascript
复制
`database`
id | domain        | db_user | db_pass | db_name
------------------------------------------------------
1  | domainone.com | root    | root    | domain_one

// MORE DATABASES HERE

当我访问domainone.com时,选择domainone.com的数据库信息并连接到新的数据库。

问题是,我如何“安全”密码,哪个是原始模式?

更新

我想知道如何存储允许您访问数据库中的其他数据库的密码。所以,我不能散列和验证哈希,正如我所知道的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-03 19:03:42

将结构更改为:

代码语言:javascript
复制
`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代码。

代码语言:javascript
复制
<?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列)一起插入到数据库中。

解密:

代码语言:javascript
复制
$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.

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-12-03 18:35:55

在将散列算法保存到数据库中之前,应该应用哈希算法。

要检查密码,只需应用相同的算法,并对存储在DB中的散列进行检查。

确保你选择了一个好的算法和盐值!

票数 -1
EN

Stack Overflow用户

发布于 2012-12-03 18:39:51

您可以使用md5加密您的密码并保存在数据库中。当您检查密码密码时,输入的密码将与数据库中的密码进行比较。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13689465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档