[SQL Server] 暗号化、復号化 / ENCRYPTBYPASSPHRASE / DECRYPTBYPASSPHRASE

inno
2014-02-28 11:00 8134 0
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 [復号化]

実行結果


以上、対象キーを利用する暗号化、復号化する方法でした。

コメント