先加密如下
其中表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解密

解决方案 »

  1.   

    http://bbs.csdn.net/topics/390100445N代表Unicode
      

  2.   

    谢谢了!
    update 时对字段加密,如何字段前加N   ,直接N pwd 要报错?
    代码如下 : 
    update user set pwd=EncryptByPassPhrase(N'123456', N pwd)  where id=100;
      

  3.   

    你的pwd 定义的是varbinary 类型的 不需要加N。
    当然也不能直接给字段前面加N
      

  4.   

    因为你的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)
      

  5.   

    谢谢!你的NVARCHAR 改成 VARCHAR 即可!