同様の回答を見てきましたが、以前に回答した質問から回答が見つからなかったため、これが探しているものです。
これが私のシナリオです。ユーザー名、暗号化されたパスワード、および 4 桁のピンまたはキーを保存するテーブル[res_user]
があります。username, password, key_pin
マネージャーがログインしてアプリ自体からデータベースを変更できるようにするアプリを C# で作成しています。
管理者は最初に、提供されたユーザー名、パスワード、および key_pin を使用してログインするように求められます。PIN は、データベースとの間でパスワードを暗号化および復号化するものです。
これで、ユーザー名[manager]
と暗号化されたパスワードが既にデータベースに保存されていますkey_pin
.
ログインしているマネージャーが正しいことを確認するにはどうすればよいですか。つまり、C# アプリからデータベース内のユーザー名と暗号化されたパスワードを比較するにはどうすればよいでしょうか。
これらは、アプリ自体に実装する予定の手順です (C# で SQL 構文を使用)。
パスワードを暗号化し、
ログインユーザー名を使用してデータベースに保存された暗号化を取得し、
アクセス制御のために、はいまたはいいえをアプリに返す暗号化を比較します。
ログインを 5 回まで試行できます。
これは私が行った最初と2番目の部分です:
try
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["STRING"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("dbo.Res_User", con))
{
cmd.CommandText = "INSERT INTO Res_User(username, password, key_pin) SELECT '" + username + "' , dbo.fnEncDecRc4('" + pin + "','" + password + "'), '" + pin + "'";
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Added", "Information", MessageBoxButtons.OK);
cmd.CommandText = "SELECT password FROM Res_User WHERE username = @username";
cmd.Parameters.AddWithValue("@username", username);
cmd.ExecuteNonQuery();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
MessageBox.Show(reader["password"].ToString(), "Information", MessageBoxButtons.OK);
}
}
}
第三部はどうしようかな。
誰かが保存されたencを比較するのを手伝ってくれる場合にのみ。パスワードとログイン enc. パート1で作成したパスワード。
さらに情報が必要な場合はお知らせください。
ありがとうございました。
どんな助けでも大歓迎です。