Это выстрел в темноту, так как вы не обеспечили способ создания ключа ENKEY
.
Из-за поведения, которое я ожидаю, он был создан с паролем, и вы не предоставляете пароль для DECRYPTBYASYMKEY, который можно вызвать без третьего параметра, например. Ключи, используя главный ключ базы данных.
/*
CREATE ASYMMETRIC KEY ENKEY
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'Mydummypassword';
*/
/*
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'
CREATE ASYMMETRIC KEY ENKEY2
WITH ALGORITHM = RSA_2048
*/
Declare @aValue Varchar(50)
Select @aValue='Test'
Select DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY'),
EncryptByAsymKey(AsymKey_ID('ENKEY'), @aValue)
) as [WithOutPassword]
,
DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY'),
EncryptByAsymKey(AsymKey_ID('ENKEY'), @aValue)
,N'Mydummypassword') as [WithPassword]
,Case when @aValue=DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY'),
EncryptByAsymKey(AsymKey_ID('ENKEY'), @aValue)
) then 1 else 0 end as [IdenticWithOutPassword]
,Case when @aValue=DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY'),
EncryptByAsymKey(AsymKey_ID('ENKEY'), @aValue)
,N'Mydummypassword') then 1 else 0 end as [IdenticWithPassword]
поставит результат:
NULL 0x54657374 0 1
Select DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY2'),
EncryptByAsymKey(AsymKey_ID('ENKEY2'), @aValue)
) as [With MASTER KEY ENCRYPTION]
,Case when @aValue=DECRYPTBYASYMKEY(ASYMKEY_ID('ENKEY2'),
EncryptByAsymKey(AsymKey_ID('ENKEY2'), @aValue)
) then 1 else 0 end as [Identic]
поставит результат:
0x54657374 1
[DECRYPTBYASYMKEY() не возвращает ожидаемое значение] (HTTP://stackoverflow.com/questions/8768144/decryptbyasymkey-not-returning-expected-value) – bummi
@bummi после использования 'CONVERT()' он все еще возвращает 'NULL' –