首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql2005 EncryptByPassPhrase 加密遇到有关问题

2013-08-04 
sql2005EncryptByPassPhrase 加密遇到问题先加密如下其中表user pwd varbinary(max)类型update user set p

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)

热点排行