【问题标题】:Display encrypted data from SQL DB显示来自 SQL DB 的加密数据
【发布时间】:2012-07-17 17:17:09
【问题描述】:

因此,我在此处http://www.kodyaz.com/articles/sql-server-2005-database-encryption-step-by-step.aspx 遵循本指南,了解如何为我的数据库设置加密。那边一切都很好。

我正在尝试让一些已加密的数据现在显示出来。我可以调用未加密的数据,但我似乎无法弄清楚如何使用对称密钥来解密加密数据并显示在页面上。

最初我认为我应该使用存储过程并让它捕获值,但不完全确定如何实现它。

echo "This is the database userId field: " . $row->userId . "<p>";
echo "This is the database email field: " . $row->email . "<p>";
echo "This is the database encryptedpassword2 field: " . $row->encrypteddata . "<p>";

这就是我调用数据的方式,但不确定如何让加密数据字段通过我的密钥传递然后显示。目前它只显示随机字符。

我对 SQL 加密有点陌生,所以我希望我能设法解释一下自己。

谢谢

【问题讨论】:

  • 密码只能以一种方式加密,并使用 crypt()
  • 为什么要显示密码? ¯(°_0)/¯
  • 我现在只想显示密码来做一些测试。我想向某人展示一些东西

标签: php sql sql-server encryption


【解决方案1】:

一般来说,您不需要解密密码字段。您只需对用户的输入进行哈希处理,并将其与之前的哈希密码进行比较,以查看哈希是否匹配。请花一分钟了解the difference between hashing and encryption

如果您真的想从数据库中获取加密信息(希望不是密码),您应该在 SQL 语句中调用 DecryptByKey(如您的 linked article 中所述),然后再将它们返回给 PHP。

【讨论】:

  • 感谢您的参考,我想我明白,如果您使用提交的明文登录,则应用所使用的散列算法,然后比较结果(如果是密码匹配)。但是,如果在数据库端使用密钥加密数据,那么如何在提交的明文上使用此密钥?这是在准备好的声明的帮助下实现的吗?
  • 是的,您必须让数据库加密提交的文本。您可以创建一个 proc 来执行此操作并进行比较,或者如果您想在数据库之外进行比较,您甚至可以在表中使用加密的最后一次尝试添加一个额外的列。
  • 对不起,我不太清楚你所说的最后一次加密的表是什么意思。你介意详细说明一下吗?
  • 您可以将用户的文本插入到表格中,就像您最初存储密码一样。此时,您可以比较应用程序任何级别中的 varbinary 字段。这真的不是必需的,只是另一个建议,您可能会发现实施起来更方便。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
相关资源
最近更新 更多