因此,我正在編寫一些tsql的程序以使組項目恢復原狀,並且正在嘗試編寫一些內容來創建帶有密碼的用戶配置文件。但是,當我運行這段代碼時,@ seedno和@saltval的值永遠不會被設置,所以我的散列密碼最終以null值結束。有沒有人可以幫忙?此代碼未設置某些值
CREATE PROCEDURE [dbo].[CreateCustomerAccount]
@companyName nvarchar (50),
@emailAddress nvarchar(50),
@password nvarchar (100),
@Addr1 nvarchar (50),
@Addr2 nvarchar (50),
@Addr3 nvarchar (50),
@postCode nvarchar (11),
@Telephone NVARCHAR (20),
@vatNo NVARCHAR (20)
AS
SET NOCOUNT ON
--Declare some variables here
DECLARE
@pwdSalt NVARCHAR (25),
@Seed INT, /* this is going to store the randomly generated seed we will use to make the salt */
@CurrentChar CHAR,
@SaltedPwd NVARCHAR (125),
@LoopCountVar TINYINT, /*because counting is fun, kids :). */
@Seedno integer,
@saltval CHAR
--Generate a seed using the customers email address and a psuedo random number generator.
SET @LoopCountVar = 0;
WHILE @LoopCountVar <= LEN(@emailAddress)
BEGIN
SET @CurrentChar = SUBSTRING(@EmailAddress, @LoopCountVar, 1)
SET @Seedno = (ASCII(@currentChar)*CRYPT_GEN_RANDOM(10000))
SET @Seed = @Seed + @Seedno --Add the integer value of the current character multiplied by a random number between 0 and 100,000 to the seed
SET @LoopCountVar = @LoopCountVar+1
END;
--Now, populate our salt string by inserting random characters using the seed we just created.
SET @LoopCountVar = 0;
while @loopCountVar <= 25
BEGIN
SET @saltval = CHAR (ROUND((RAND()*94)+32,3))
SET @pwdSalt = @pwdSalt + @saltval
SET @LoopCountVar = @LoopCountVar+1
END;
--Time for delicious delicious salted hash
Set @SaltedPwd = @[email protected];
-- Insert data into table
Insert into Customer (orgName, Email, AccountPwd, PwdSalt, AddressLine1, AddressLine2, AddressLine3, PostCode, TelephoneNo, VATNo)
VALUES (@companyName, @emailAddress, HASHBYTES('MD5', @SaltedPwd), @pwdSalt, @Addr1, @Addr2, @Addr3, @postCode, @Telephone, @vatNo);
RETURN 0
那麼由於一點也沒有使用的種子,第一循環似乎是白費力氣呢。 –
那很好,當前版本在第二個循環中使用@seed。我在某一點上忘了它。我將行改爲 SET @Seedno =(ASCII(@currentChar)* CAST(CRYPT_GEN_RANDOM(2)AS INT))' –
...並且它投擲了 消息8152,級別16,狀態13,過程CreateCustomerAccount, 62行 字符串或二進制數據將被截斷。 該聲明已被終止。 對不起有關二重柱。我以前沒有用過這個,我正在努力去適應它。 –