0
を返していない私は、暗号化し、次のコードを使用して復号化しようとしています:ENCRYPTBYPASSPHRASEとDECRYPTBYPASSPHRASEが正しい値に
declare @decryptedValue nvarchar(4000)
declare @encryptedValue varbinary(8000)
SET @encryptedValue = ENCRYPTBYPASSPHRASE('SQL SERVER 2008','SomeValue')
Set @decryptedValue = DECRYPTBYPASSPHRASE('SQL SERVER 2008',@encryptedValue)
print @decryptedValue
をしかし、復号化された値は、私は(「someValueの」)に渡されたものではありませんが、いくつかの暗号化charecter潓敭慖畬e。不思議な
私はそれが動作を下回るような二つの機能作成した場合:
CREATE FUNCTION dbo.Encrypt(@str nvarchar(4000))
RETURNS varbinary(8000)
AS BEGIN
DECLARE @res varbinary(8000)
SET @res = ENCRYPTBYPASSPHRASE('SQL SERVER 2008',@str)
RETURN (@res)
END
GO
CREATE FUNCTION dbo.Decrypt(@encrypt varbinary(8000))
RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @res nvarchar(4000)
SET @res = DECRYPTBYPASSPHRASE('SQL SERVER 2008',@encrypt)
RETURN(@res)
END
GO
declare @x nvarchar(4000)
declare @code varbinary(8000)
SET @code = dbo.Encrypt('SomeValue')
Print @code
set @x = dbo.Decrypt(@code)
print @x
私は何をしないのですか?
問題はnvarcharで、varchatに変更するとうまくいきます – Simsons