利用mysql加密功能共享网站敏感数据

利用mysql加密功能共享网站敏感数据
如果你正在使用MySQL的Web应用程序,它必须在应用程序中保存的密码或其他敏感信息的好机会。保护这些数据免受黑客攻击或窃听是一个非常关注的问题,因为你既不允许未经授权的人员使用或破坏应用程序,而且还保证你的竞争优势。幸运的是,MySQL有很多加密功能设计提供这种类型的安全性,本文概述了一些的功能,并说明如何使用这些安全的不同层次,他们可以提供。

双向加密

让我们用最简单的加密开始:双向加密。在这里,一块数据与一个密钥进行加密,并只能由人谁知道key.mysql有两个功能来支持这种类型的加密解密,称为编码和解码()()。以下是一个简单的例子:

MySQL >插入用户(用户名、密码)值(乔,编码('guessme、嘛呢叭咪));

查询OK,1行受影响(0.14秒)

在这,乔密码是guessme,这是经过加密的关键咒语。需要注意的是,加密的结果是一个二进制字符串,如下所示:

MySQL >从users用户名= '乔';

---------- ---------- + + +

| | |用户名密码

---------- ---------- + + +

|乔|我|!

---------- ---------- + + +

1行集(0.02秒)

咒语的关键是恢复到原始字符串的关键。这个密钥必须通过解码()函数来得到原始的、未加密的密码。下面是它的使用方式:

MySQL >选择解码(密码,嘛呢叭咪)从用户的用户名= '乔';

--------------------------------- + +

|解码(密码,嘛呢叭咪)|

--------------------------------- + +

| guessme |

--------------------------------- + +

1行集(0秒)

应该很容易看出它是如何在Web应用程序中运行的。当验证用户登录时,解码()将打开网站专用密钥保存在数据库中的密码,并将其与用户输入的内容进行比较。如果您使用PHP作为自己的脚本语言,则可以查询如下:

美元=选择查询计数(*)从用户,用户名为$ inputuser'and解码(密码,嘛呢叭咪)=inputpass美元;>

提示:虽然两功能的编码和解码()()可以满足大部分的要求,有时你想使用强加密。在这种情况下,你可以使用aes_encrypt()和()函数,这aes_decrypt工作方式相同,但加密高。

单向加密

单向加密不同于双向加密,一旦数据被加密,无法逆转这一过程。因此,密码的认证包括重新对用户输入的内容加密,并保存的密文进行比较,看是否匹配。一个简单的单向加密方法是MD5校验码,MD5()函数创建一个你的MySQL数据指纹并保存测试使用。下面是一个简单的例子,如何使用它:

MySQL >插入用户(用户名、密码)值(乔,MD5('guessme '));

查询OK,1行受影响(0秒)

MySQL >从users用户名= '乔';

---------- ---------------------------------- + + +

| | |用户名密码

---------- ---------------------------------- + + +

|乔| 81a58e89df1f34c5487568e17327a219 |

---------- ---------------------------------- + + +

1行集(0.02秒)

现在您可以测试用户输入的内容是否与保存的密码相匹配。方法是获取用户输入密码的MD5校验码,并将其与保存的密码进行比较。

MySQL > select count(*)从用户的用户名密码= = 'joe'and MD5('guessme);

---------- + +

|计数(*)|

+----------+

1 | |

---------- + +

1行集(0秒)

或者,你想使用加密()函数,它使用的加密系统调用()系统底层系统完成加密。这个函数有两个参数:一个字符串进行加密,而另一个是双(或多个)字符盐。然后用盐对字符串进行加密;然后盐可用于加密用户输入的内容,并与先前加密的字符串比较。下面的示例演示如何使用它:

MySQL >插入用户(用户名、密码)值('乔',加密('guessme ','ab '));

查询OK,1行受影响(0秒)

MySQL >从users用户名= '乔';

---------- --------------- + + +
| | |用户名密码

---------- --------------- + + +

|乔| AB / g8gtzdmwak |

---------- --------------- + + +

1行集(0秒)

其结果是

MySQL > select count(*)从用户的用户名密码= = 'joe'and加密('guessme ','ab);

---------- + +

|计数(*)|

---------- + +

1 | |

---------- + +

1行集(0秒)

提示:加密()只能用在*nix系统,因为它需要使用底层隐窝()库。

tag:网站敏感数据加密功能电脑软件

相关内容