我有 2 个存储过程Encode
,Decode
我想使用此 sp 将我的datetime
列值(例如Dob
)转换为加密日期。问题是加密格式不在日期时间(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
任何建议不胜感激!
您必须分多个步骤对列定义进行此更改。
1) 将新的加密日期列设置为编码值。
2)从表中删除现有日期列。
3) 将加密日期重命名为现有日期列名称。
您也许可以在一个命令中执行步骤 2 + 3,但我不确定语法。
任何建议不胜感激!
这整件事听起来像是一个坏主意。如果数据已加密,但"解码"功能是数据库中的存储过程,则数据实际上未加密。这样做还可以防止所有数据比较正常工作,这是一件坏事。
如果您不想向用户呈现数据,为什么不在从数据库读取数据时对其进行编码?
时间,特别是日期具有非常不寻常的非线性结构。即使将日期存储在用于日期的结构中也很困难。如果您需要加密存储此数据,请不要尝试将其存储在日期/日期时间字段中。