2

我有 2 个存储过程EncodeDecode我想使用这个 sp 将我的datetime列值(比如Dob)转换为加密日期。问题是加密格式不在 datetime(varbinary) 中,因此它不能插入到该字段中。更改数据类型或添加新列对我不利,因为我的数据库是一个有很多表和 sps 的巨大数据库。我目前使用的步骤是:

declare @datetime
set @datetime='01/02/2008 12:45 PM'
declare @secretDate varchar(400)
declare @date varchar(200)
set @date=(select Convert(varchar(200),@datetime,120)
EXEC @secretDate=dbo.Encode @date
set @date=(select Convert(varchar(200),@secretdate,120))
select Convert(varchar(200),convert(varbinary(MAX),@date)) as EncryptedDate

任何建议表示赞赏!

4

2 回答 2

2

您必须在多个步骤中对列定义进行此更改。

1) 为编码值添加一个新的 encryptedDate 列集。

2) 从表中删除现有的日期列。

3) 将 encryptedDate 重命名为现有日期列名。

您也许可以在一个命令中执行步骤 2 + 3,但我不确定语法。

任何建议表示赞赏!

这整件事听起来是个坏主意。如果数据已加密,但“解码”函数是数据库中的存储过程,则数据实际上并未加密。这样做还会阻止所有数据比较工作,这是一件坏事。

如果您不想将数据呈现给用户,为什么不直接在从数据库中读取数据时对其进行编码?

于 2012-07-16T07:37:41.970 回答
0

时间,尤其是日期具有非常不寻常的非线性结构。即使将日期存储在用于日期的结构中也很困难。如果您需要加密存储此数据,请不要尝试将其存储在日期/日期时间字段中。

于 2012-07-16T08:11:23.407 回答