SQL如何加密nvarchar列

时间:2016-06-28 13:10:34

标签: sql sql-server encryption sql-server-2014

我有以下代码(SQL server 2014):

    declare @f nvarchar(10) = 'فيدف '
    update mytable set mycol=ENCRYPTBYPASSPHRASE('key', @f) where id = 1

    declare @encrypt varbinary(750) 
    select @encrypt = (select mycol from mytable where id =1)

    select  convert(nvarchar(255),DECRYPTBYPASSPHRASE('key',@encrypt))

解密的结果是' ??????',为什么会这样?

1 个答案:

答案 0 :(得分:0)

你确定mycol数据类型是varbinary(750)吗?我使用了完全相同的代码并且可以正常使用

确保:

Mycol = varbinary(750)

您无法将加密值保存为nvarchar

编辑:更新问题后的新解决方案

只需在文字

之前添加N.
declare @f nvarchar(10) = N'فيدف '
update mytable set mycol=ENCRYPTBYPASSPHRASE('key', @f) where id = 1

declare @encrypt varbinary(750) 
select @encrypt = (select mycol from mytable where id =1)

select  convert(nvarchar(255),DECRYPTBYPASSPHRASE('key',@encrypt))