ENCRYPTBYPASSPHRASE,DECRYPTBYPASSPHRASEは対象キー暗号化方式です。
128bitの TRIPLE DES アルゴリズムを利用して暗号化します。
対象キーを利用して暗号化、復号化を行っていますので、
対象キーが分かればすぐデータを復号化することができますので、
セキュリティ的には弱いです。
ですが、使い方がすごく簡単ですので、説明したいと思います。
DECLARE @Str nvarchar(100)
DECLARE @EncryptKey varchar(20)
DECLARE @StrResultEncrypt varbinary(8000)
DECLARE @StrResultDecrypt nvarchar(100)
SET @Str = N'test'
SELECT N'文字列', @Str
SET @EncryptKey = 'privatekey' --対象キーを設定。
SET @StrResultEncrypt = ENCRYPTBYPASSPHRASE(@EncryptKey, @Str)
SELECT N'暗号化したデータ', @StrResultEncrypt
SET @StrResultDecrypt = DECRYPTBYPASSPHRASE(@EncryptKey, @StrResultEncrypt)
SELECT N'復号化したデータ', @StrResultDecrypt
各変数について説明します。
@Str : 暗号化する文字列
@EncryptKey : 暗号化、復号化をする時に使う対象キー
@StrResultEncrypt : 暗号化されたバイナリ値
@StrResultDecrypt : 復号化された文字列
では、実行して結果を見ましょう。
実行結果
文字列が暗号化と復号化されたデータを確認することができます。
実際に使う時は関数を作成して利用すると便利です。
暗号化する関数(dbo.fnEnCrypt)と復号化する関数(dbo.fnDeCrypt)を作成します。
下記のSQLの中で「privatekey」と書いてある部分は対象キーですので、
皆さんが再設定をしてください。
--暗号化する関数(dbo.fnEnCrypt)
CREATE FUNCTION dbo.fnEnCrypt (
@Str nvarchar(100)
)
RETURNS varbinary(256)
AS
BEGIN
RETURN ENCRYPTBYPASSPHRASE('privatekey', @Str)
END
GO
--復号化する関数(dbo.fnDeCrypt)
CREATE FUNCTION dbo.fnDeCrypt (
@Str varbinary(256)
)
RETURNS nvarchar(100)
AS
BEGIN
RETURN DECRYPTBYPASSPHRASE('privatekey', @Str)
END
GO
この関数を利用して実際に使う時は下記のように使います。
SELECT dbo.fnEnCrypt(N'test') AS [暗号化]
SELECT dbo.fnDeCrypt(0x01000000BF8230E46342948BB8A0FE62F11336E16E131C4F3AC6978B4E53A5280DC549D3) AS [復号化]
実行結果
以上、対象キーを利用する暗号化、復号化する方法でした。