【问题标题】:How to verify that whether a column is an encryption key/value or plain text in SQL Server 2008如何在 SQL Server 2008 中验证列是加密键/值还是纯文本
【发布时间】:2015-09-03 05:09:46
【问题描述】:

在 SQL Server 2008 中如何验证列是加密键/值还是纯文本?

【问题讨论】:

  • 您可以访问该表吗?可以查询吗?您是否正在寻找一个通用的解决方案,可以找到所有加密列?更多细节会很好。
  • 加密是在sql server还是应用程序中完成的?您的问题根本没有足够的信息让任何人都能够回答它。 weblogs.sqlteam.com/jeffs/archive/2008/05/13/…
  • 大家好,感谢您提出这一点。示例代码如下所示创建对称密钥 EncryptTableKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE EncryptTestCert OPEN SYMMETRIC KEY EncryptTableKey DECRYPTION BY CERTIFICATE EncryptTestCert UPDATE encryption_key SET PasswordKeyEnCol= ENCRYPTBYKEY (KEY_GUID('EncryptTableKey'),PasswordHash),SaltKeyEnCol = ENCRYPTBYKEY(KEY_GUID('EncryptTableKey'), 现在在同一个存储过程中,我想验证 PasswordKeyEnCol 列是否具有加密值,例如 if 条件和其他一些东西

标签: sql-server sql-server-2008


【解决方案1】:

SQL Server 2008 中的单元或列级加密是一种外部操作 - 这意味着 SQL Server 实际上并不知道它已加密。您创建密钥,读取原始类型的纯文本数据,加密并将密文作为 varbinary 类型写回表中。这意味着如果您完成该过程,您将拥有一个 varbinary 类型的新列。

没有可以查询的目录视图,因为就 SQL Server 而言,它只是另一个 varbinary 列。如果原始类型不是 varbinary,则可以通过检查列的长度和/或类型来手动找出它。如果要验证每行而不是整列,还可以检查实际值或使用正则表达式。如果原始类型是 varbinary,这可能不是设计解决方案的最佳位置。

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 2023-03-19
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多