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)