我正在使用 encryptbypassphrase/decyptbypassphrase 加密/解密 SqlServer 2008 R2 数据库中的数据。
它工作正常,但解密密码短语为我的数据添加了一些“噪音”,例如“\0”。我通过正则表达式管理它。
但现在我的情况更糟,该函数返回“ýÿ:ýÿ ýÿOýÿuýÿiýÿ”而不是“:Oui”(我必须从字符串中删除ýÿ......)
我正在使用CONTEXT_INFO
来存储密码,并在我的查询中检索它。存储过程:
DECLARE @PassPhrase VARCHAR(128)
EXEC [dbo].[sp_GetContextInfo]
@ContextInfo = @PassPhrase out
--
SELECT
ap.ActionPlanStatusId,
CONVERT(VARCHAR(MAX),DECRYPTBYPASSPHRASE(@PassPhrase,ap.Cost)) AS Cost,
CONVERT(VARCHAR(MAX),DECRYPTBYPASSPHRASE(@PassPhrase,ap.[Description])) AS [Description],
CONVERT(VARCHAR(MAX),DECRYPTBYPASSPHRASE(@PassPhrase, ap.Follow)) AS Follow,
ap.Id,
ap.ModifiedBy,
ap.ModifiedOn,
ap.RiskSheetId,
ap.TreatmentId
FROM dbo.ActionPlan ap
WHERE ap.Id = @ActionPlanId
这是代码(我使用的是简单的 DataReader):
var actionPlan = new Core.ActionPlan
{
Id = Convert.ToInt32(reader["Id"]),
ActionPlanStatusId = Convert.ToInt32(reader["ActionPlanStatusId"]),
Cost = reader["Cost"] as string,
Description = reader["Description"] as string,
Follow = reader["Follow"] as string,
RiskSheetId = Convert.ToInt32(reader["RiskSheetId"]),
TreatmentId = Convert.ToInt32(reader["TreatmentId"]),
ModifiedOn = Convert.ToDateTime(reader["ModifiedOn"])
};
谢谢