0

这似乎有点琐碎,但我花了一些时间谷歌搜索没有结果。无论如何,我正在开发一个 Web 应用程序,我需要将“敏感”数据存储在 mysql 数据库中,然后访问它以验证来自 python 的 api 调用。我不是安全专家,但我对散列和加密有基本的了解。

我知道如何使用 aes_decrypt aes_encrypt 加密数据,我也知道如何使用 mysql 提供的 password() 函数对数据进行哈希处理。

我的第一个问题是我应该加密这些数据还是散列它?我的第二个问题是,一旦我使用 mysql 中的 password() 函数对其进行哈希处理,我不知道如何在 python 中“访问”或“使用”密码信息。

任何帮助深表感谢。

4

1 回答 1

0

首先我不是python专家,我的回答只是针对一般方法。

Web 应用程序中的密码通常存储为哈希值,而不是加密的,如果您的表被泄露,这基本上会使某人更难获取它们。散列应该尽可能可靠地生成。请不要只使用 MD5,最好使用更安全的东西(从今天的角度来看)并正确加盐以最大限度地减少彩虹攻击的风险。

我不会Password()为此使用 MySQL 函数。文档说:

MySQL Server 中的身份验证系统使用 PASSWORD() 函数;您不应该在自己的应用程序中使用它。为此,请考虑使用MD5()SHA2()

这留下了SHA2(),如果你想用 MySQL 散列,但不要忘记在散列之前对字符串加盐。我这样做的方法是使用您的应用程序对字符串进行哈希处理(请参阅python hashlib b 以供参考),像这样对其进行加盐,然后将哈希存储在数据库中。这避免了应用程序和数据库服务器之间的数据安全问题。

于 2013-06-23T18:17:36.760 回答