我有以下代码(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))
解密的结果是' ??????',为什么会这样?
答案 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))