2012-06-28 12 views
0
alter PROC [dbo].[Ins_Users] 
@UserID int , 
@UserName nvarchar (max) , 
@Password nvarchar (max) , 
@Name nvarchar (100) , 
@Family nchar (10) , 
@LastLoginDate datetime 
AS 
BEGIN 
----------------------------------------- 
DECLARE @Passphrase nvarchar(128); 
declare @newPass nvarchar(max); 
declare @temp varbinary(max); 
SET @Passphrase 
    = 'hadi'; 
SET @temp= EncryptByPassPhrase(@Passphrase,@Password); 
set @newPass=CONVERT(nvarchar(max),@temp); 
----------------------------------------- 
    INSERT INTO [dbo].[Users] 
     ( 
     [UserID], 
     [UserName], 
     [Password], 
     [Name], 
     [Family], 
     [LastLoginDate] 
     ) 
     VALUES 
     ( 
     @UserID, 
     @UserName, 
     @newPass, 
     @Name, 
     @Family, 
     @LastLoginDate 
     ) 
END 

암호를 암호화하여 DB에 저장하려고합니다. 결과로 varbinary를 반환하는 sql에서 EncryptByPassPhrase 함수를 사용합니다. 하지만 내 pass 열은 nvarchar 형식이므로 nvarchar로 변환합니다. @ newPass = CONVERT (nvarchar (max), @ temp); 암호화 결과가 true이지만 Convert 결과가 비어있는 경우SQL에서 EncryptByPassPhrase 함수로 암호 암호화

+0

varbinary 값의 ASCII 표현을 얻으므로 convert를 사용할 수 없습니다. 방법이있을 것이라고 확신하지만 암호화 라이브러리를 작성했으며 데이터 유형을 사용하지 않고도 디버그하기가 어려웠습니다. 내 충고는 varbinary 열을 사용하는 것입니다. 어떤 이유로 든 varchar를 유지해야하는 경우 두 가지를 모두 유지해야합니다. – iain

답변