[SQL Server] データ暗号化・パスワード暗号化 / PWDENCRYPT / PWDCOMPARE

inno
2014-03-30 19:39 3187 0
データ暗号化・パスワード暗号化 / PWDENCRYPT / PWDCOMPARE

この暗号化方式は暗号化のみで復号化はできません。
また,この暗号化方式よりHASHBYTES関数を使ったMD5, SHA256などを利用することをおすすめします。


データを暗号化するときは「PWDENCRYPT」関数を使います。
結構古い関数なので、この関数よりは「HASHBYTES」関数をおすすめします。

「PWDENCRYPT」関数を使い方
SELECT PWDENCRYPT('暗号化する文字')

戻り値の型は「varbinary(128)」です。

またデータを比較する時は「PWDCOMPARE」関数を使います。

「PWDCOMPARE」関数を使い方
SELECT PWDCOMPARE('暗号化する文字','PWDENCRYPTで暗号化された文字')

戻り値の型は「int」型で、一致する場合は「1」、一致しない場合は「0」を返します。

では、下記の例文を実行しながら理解しましょう~

DECLARE @StrVal varchar(100)
DECLARE @StrResult varbinary(128)

-- #### 暗号化する文字
SET @StrVal = 'innoya'

-- #### 暗号化!
SET @StrResult = PWDENCRYPT(@StrVal)

-- #### 暗号化結果
SELECT N'暗号化データ', @StrResult Result

-- #### データを比較。
SELECT PWDCOMPARE(@StrVal, @StrResult) CompareResult

「PWDENCRYPT」関数をは同じ文字を暗号化しても毎回違う値を返しますので、
データを比較する時は「PWDCOMPARE」関数を利用する必要があります。

コメント