SqlServer 2008 R2 データベースのデータを暗号化/復号化するために、encryptbypassphrase/decyptbypassphrase を使用しています。
正常に動作していますが、decryptbypassphrase が「\0」などの「ノイズ」をデータに追加しています。私はそれを正規表現で管理しました。
しかし、今ではさらに悪い状況になり、関数は ": Oui" ではなく "ýÿ:ýÿ ýÿOýÿuýÿiýÿ" を返しています (文字列から ýÿ を削除する必要があります...)
を使用し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"])
};
ありがとう