2012-03-21 1 views
5

'dan garip bir sonuç Tablodaki bir sütunu şifrelemeyi ve şifresini çözmeyi deniyorum. Benim kod aşağıdaki gibidir:DecryptByPassphrase

drop table EncryptString 
go 
create table EncryptString(db int, String varchar(100)) 
go 
insert into EncryptString values (2, '123456789') 
go 
ALTER TABLE EncryptString 
ADD StringEncrypted varbinary(256); 
GO 

declare @Pass nvarchar(512) 
set @Pass = 'somepassword' 
update EncryptString set StringEncrypted = ENCRYPTBYPASSPHRASE(@Pass, String, 1,     convert(varbinary(128), db)) 
where db = 2 

select * From EncryptString 

SELECT db, StringEncrypted 
AS 'Encrypted String', CONVERT(nvarchar, 
DecryptByPassphrase('somepassword', StringEncrypted, 1 
, CONVERT(varbinary, db))) 
AS 'Decrypted String' FROM EncryptString 
WHERE db = 2; 

benim 'decrypted Dize' böyle Neden: ㈱ 㐳 㘵 㠷 9

Teşekkür

cevap

7

Sen şifreliyorsanız bir varchar ama o andan itibaren nvarchar dönüştürmek Şifre çözme sırasında ikili varchar gösterimi. Eğer beklendiği gibi çalıştığını CONVERT(varchar için şifre çözme bit değiştirmek durumunda

yani etkili bir SELECT CAST(CAST('123456789' AS VARBINARY(30)) AS NVARCHAR(30))

yapıyoruz. Gerekirse varchar'dan nvarchar'a dökebilirsiniz.

+0

Bu işe yarıyor. Teşekkür ederim ben soru cevap olarak nasıl işaretlemek bilmiyorum ??? – user1212016

+0

@ user1212016 - Yanıtın solundaki onay işaretini işaretleyebilirsiniz, Teşekkürler! –

+1

Aynı zamanda Microsoft belgelerini takip ettikten sonra da aynı sorunu yaşadım: https://msdn.microsoft.com/en-us/library/ms188910.aspx Düzeltme ve açıklama için teşekkürler. – Nick