私は、SQL Serverでaes_256アルゴリズムを使用して自分のパスワードフィールドを暗号化しました。パスワードフィールドが暗号化されました。これで、ユーザーにログインし、サーバー上で検証プロセスを実行する必要があります。 私は検証プロセスのために書いたコードは次のとおりです。SQL Serverでパスワードの検証を行う方法は?
CREATE PROCEDURE Procedure_UserLogin
@username varchar(50),
@pwd varchar(50),
@responseMessage INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @userID INT
IF EXISTS(SELECT TOP 1 username FROM userInfo WHERE [email protected])
BEGIN
open symmetric key key1
decryption by certificate namecert
SET @userID=(SELECT username FROM userInfo WHERE [email protected] AND encryptedpwd=(ENCRYPTBYKEY(KEY_GUID('key1'),@pwd)))
IF (@userID IS NULL)
SET @responseMessage=0 /*INAVLID PASSWORD*/
ELSE
SET @responseMessage=1 /*VALID USERNAME AND PASSWORD*/
END
ELSE
SET @responseMessage=2 /*INVALID USERNAME*/
END
しかし、応答は常に0である私がやっている何の間違いを教えてください?
パスワードを暗号化しないでください:
だから、このようにそれを実装する代わりに、パスワードを暗号化しないでください。暗号化されたものはすべて解読できます。パスワードを暗号化してハッシュし、ハッシュをデータベースに格納します。ユーザーがログインすると、パスワードを暗号化してハッシュし、結果のハッシュとデータベースのハッシュ値を比較します。 – dbugger
username(varchar)から@userID(Int)を選択しています。私はあなたが変換エラーを取得しないと驚いています。 –
@dbugger、私はクライアント側に私の暗号化されたパスワードを持って来ていない、また、私はaes_256アルゴリズムは、ハッシュと塩で一緒に行われたような結果を生成すると思います。私が間違っているなら、私を訂正してください。 – Krisalay