証明書と対称鍵を使用してデータベース列を暗号化しようとしています。
以下を使用して、証明書と対称鍵を正常に作成しました。
CREATE CERTIFICATE MyCertificate
ENCRYPTION BY PASSWORD = 'password'
WITH SUBJECT = 'Public Access Data'
GO
CREATE SYMMETRIC KEY MySSNKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE MyCertificate
以下を使用して、いくつかのデータを暗号化および復号化してみました。
DECLARE @Text VARCHAR(100)
SET @Text = 'Some Text'
DECLARE @EncryptedText VARBINARY(128)
-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY MySSNKey
DECRYPTION BY CERTIFICATE MyCertificate;
SELECT @EncryptedText = EncryptByKey(Key_GUID('MySSNKey'), @Text)
SELECT CONVERT(VARCHAR(100), DecryptByKey(@EncryptedText)) AS DecryptedText
これを行うと、次のエラーメッセージが表示されます。
証明書には、ユーザー定義のパスワードで保護された秘密鍵があります。秘密鍵を使用できるようにするには、そのパスワードを指定する必要があります。
最終的に、私がやろうとしているのは、暗号化されていないデータを入力として受け取り、暗号化してから、暗号化された変数として格納するストアドプロシージャを作成することです。次に、反対の処理を行う2番目のストアドプロシージャを作成します。つまり、暗号化された変数を復号化して、人間が読める形式のデータ型に変換し直します。ストアドプロシージャで直接パスワードを指定する必要はありません。それを行う方法はありますか?上記のコードで何が間違っていますか?
ありがとう。