加密 - 在SQl Server 2008中使用法语单词解密

时间:2014-02-25 06:57:12

标签: sql sql-server-2008 encryption

我想在Catégories的表格中添加EncryptByKey这样的法语单词。这是我的疑问:

OPEN SYMMETRIC KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1;
insert into tbl_Name (Name)
values (EncryptByKey( Key_GUID('SymmetricKey1'), CONVERT(Nvarchar,'Catégories')))

但是当我使用以下查询检索值时,我得到了慃㽴潧楲獥而不是Catégories

OPEN SYMMETRIC KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1;
SELECt CONVERT(NVARCHAR(max),DECRYPTBYKEY(Name)) as Name from tbl_Name 

你可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

我认为此问题是由 collation 引起的,因为数据存储在UNICODE数据类型中。我认为您需要的是,当您选择数据时,您需要确保对执行请求的用户(即他们的区域设置)使用适当的排序规则。

您可以尝试这样:

OPEN SYMMETRIC KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1;

insert into tbl_Name (Name)
values (EncryptByKey( Key_GUID('SymmetricKey1'), N'Catégories'))

N将确保数据以unicode格式存储在数据库中。

答案 1 :(得分:0)

写法语单词和前缀“N”将字符串标记为Unicode,然后加密:

insert into tbl_Name (Name)
values (EncryptByKey( Key_GUID('SymmetricKey1'), N'Catégories'))