DecryptByKeyAutoCert()を使用して解読されたDB暗号化カラムを返すストアドプロシージャがあります。これは、asp.netページから(System.Data.SqlClient.SqlCommand経由で)呼び出され、Repeaterコントロールにバインドされています。復号化手順を実行する列は、私たちのasp.netページに表示されません。プロシージャーによって戻された暗号化されていない列は正常に表示されます。 DecryptByKeyAutoCertはvarbinaryを返しますので、結果をCONVERTからvarcharに実行します。SQL Server DBの復号化カラムをASP.Netページにプルすると失敗する
IE。
SELECT CONVERT(varchar(50), DecryptByKeyAutoCert(CERT_ID('ourCertId') , NULL, b.Address2)) AS Address2
...
このストアドプロシージャは、SSMSでテストするときに正常に動作します。何か案は?
私は証明書に使用されているユーザーに明示的な権利を与えていません。それは証明書による暗号化 – user575120
追加するには、権利の問題のようです。私がテストしていたとき、同じユーザーがウェブサイトに使用したので、私はそうしていませんでした。そうすることで、暗号化された列はSSMSでNULLに戻ります。 MSDNのアクセス許可から 対称キーのVIEW DEFINITION権限と証明書のCONTROL権限が必要です。 – user575120