Problème de chiffrement SQL Server 2008 R2, lors du déchiffrement de caractères spéciaux

Je suis un tout nouveau encryption SQL Server et j'ai besoin de crypter certaines colonnes de ma database. J'ai réussi à créer la key principale, le certificate, la key symésortingque et à chiffrer ma colonne, mais quand je la décrypte, elle montre des caractères similaires au chinois, est-ce que quelqu'un a connu quelque chose de similaire?

C'est mon code.

DROP SYMMETRIC KEY CL1AES256Key1; GO DROP CERTIFICATE CL1AES256Cert1 GO DROP MASTER KEY GO USE MYDB GO IF NOT EXISTS (SELECT * FROM sys.symmesortingc_keys WHERE symmesortingc_key_id = 101) CREATE MASTER KEY ENCRYPTION BY PASSWORD = '24RJFEGFJuifjei343' GO CREATE CERTIFICATE CL1AES256Cert1 WITH SUBJECT = 'Encrypting certificatee', EXPIRY_DATE = '12/31/2030'; GO CREATE SYMMETRIC KEY CL1AES256Key1 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE CL1AES256Cert1; GO OPEN SYMMETRIC KEY CL1AES256Key1 DECRYPTION BY CERTIFICATE CL1AES256Cert1; INSERT INTO TMP VALUES(ENCRYPTBYKEY(KEY_GUID('CL1AES256Key1'), 'Yummi')) CLOSE SYMMETRIC KEY CL1AES256Key1; OPEN SYMMETRIC KEY CL1AES256Key1 DECRYPTION BY CERTIFICATE CL1AES256Cert1; SELECT CAST(DECRYPTBYKEY(ENC) as nvarchar) FROM dbo.TMP CLOSE SYMMETRIC KEY CL1AES256Key1; 

Voici le résultat 留浭i

Si quelqu'un sait où je fais l'erreur, cela m'aiderait beaucoup.

Cordialement,

Fabiano

Vous convertissez la valeur cryptée en nvarchar , mais lorsque vous utilisez l'instruction insert, vous spécifiez un varchar normal. Si vous convertissez le résultat en varchar, cela devrait fonctionner comme prévu.

En outre, si vous préfixez votre string avec le caractère N , comme N'Yummi' , cela devrait également fonctionner, car l'utilisation de N indique au server SQL que ce littéral est unicode. Voir http://msdn.microsoft.com/en-us/library/ms179899.aspx

Vous pouvez descendre un très grand trou de lapin sur les collations de strings dans le server SQL.

http://msdn.microsoft.com/en-us/library/ms143726.aspx