日期:2014-05-17  浏览次数:20670 次

sql2005 EncryptByPassPhrase 加密遇到问题
先加密如下
其中表user pwd varbinary(max)类型
update user set pwd=EncryptByPassPhrase(N'123456', pwd)  where id=100;
再解密

select user, pwd  ,CONVERT(NVARCHAR(50),DECRYPTBYPASSPHRASE(N'123456',pwd)) from user  where  id=100;
解密后出现乱码?? 有一个疑问,其中的N参加代表什么 意思??

sql2005 解密

------解决方案--------------------
http://bbs.csdn.net/topics/390100445

N代表Unicode
------解决方案--------------------
你的pwd 定义的是varbinary 类型的 不需要加N。
当然也不能直接给字段前面加N
------解决方案--------------------
因为你的pwd 是varbinary 类型的
你要看你原来这个varbinary 是从什么类型转换过去的
你的NVARCHAR 改成 VARCHAR 可能就不乱吗了
给你看个例子

DECLARE @v varchar(100)='A~!!@12345',@N Nvarchar(100)=N'A~!!@12345', @vb varbinary(100);
SET @vb = CONVERT(varbinary(100),@v)
SELECT CONVERT(varchar(100),@vb),CONVERT(Nvarchar(100),@vb)
SET @vb = CONVERT(varbinary(100),@N)
SELECT CONVERT(varchar(100),@vb),CONVERT(Nvarchar(100),@vb)