私はSQL Server 2000でこのクエリを持っています。
select pwdencrypt('AAAA')
で、 'AAAA'という暗号化された文字列を出力します。
となります。 0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D プレ>
どのようにして出力を原点( 'AAAA' )から変換(復号化)することができますか?
pwdencryptはハッシュを使っているので、ハッシュ化された文字列を逆にすることはできないと思います。
ユーザーが入力したパスワードを検証する場合、通常の手法はハッシュ化して、データベースのハッシュ化されたバージョンと比較します。
これは、ユーザーが入力したテーブルを検証する方法です。
SELECT password_field FROM mytable WHERE password_field=pwdencrypt(userEnteredValue)
userEnteredValueを(ビックリ)ユーザーが入力した値に置き換える :)
このパスワードを再び解読することはできませんが、"pwdcompare"という別の方法があります。ここでは、SQL構文を使った例を示します。
USE TEMPDB
GO
declare @hash varbinary (255)
CREATE TABLE tempdb..h (id_num int, hash varbinary (255))
SET @hash = pwdencrypt('123') -- encryption
INSERT INTO tempdb..h (id_num,hash) VALUES (1,@hash)
SET @hash = pwdencrypt('123')
INSERT INTO tempdb..h (id_num,hash) VALUES (2,@hash)
SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 2
SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
SELECT * FROM tempdb..h
INSERT INTO tempdb..h (id_num,hash)
VALUES (3,CONVERT(varbinary (255),
0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8))
SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 3
SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
SELECT * FROM tempdb..h
DROP TABLE tempdb..h
GO