私はハッシュ作業をすることができましたが、塩分はまだ問題です。私は成功していない例を探し、テストしてきました。MVC - ハッシュと塩の方法
[Required]
[StringLength(MAX, MinimumLength = 3, ErrorMessage = "min 3, max 50 letters")]
public string Password { get; set; }
public string Salt { get; set; }
ハッシュパスワード機能(塩なし):
public string HashPass(string password) {
byte[] encodedPassword = new UTF8Encoding().GetBytes(password);
byte[] hash = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(encodedPassword);
string encoded = BitConverter.ToString(hash).Replace("-", string.Empty).ToLower();
return encoded;//returns hashed version of password
}
登録:
[HttpPost]
public ActionResult Register(User user) {
if (ModelState.IsValid) {
var u = new User {
UserName = user.UserName,
Password = HashPass(user.Password)//calling hash-method
};
db.Users.Add(u);
db.SaveChanges();
return RedirectToAction("Login");
}
}return View();
}
ログイン:
これはハッシュと私のコードです10 public ActionResult Login() {
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(User u) {
if (ModelState.IsValid)
{
using (UserEntities db = new UserEntities()) {
string readHash = HashPass(u.Password);
var v = db.Users.Where(a => a.UserName.Equals(u.UserName) &&
a.Password.Equals(readHash)).FirstOrDefault();
if (v != null) {
return RedirectToAction("Index", "Home"); //after login
}
}
}return View(u);
}
これまでのハッシュ作業..しかし、私はここでどのように塩作業をしますか?
単語で理解するのが非常に難しいので、私は自分のコードのデモンストレーションを好むでしょう。
私はまずデータベースを使用しています。
ここには良い例があります[http://www.obviex.com/samples/hash.aspx] – mmushtaq
[Salted Password Hashing - それを正しく行う](https://crackstation.net/hashing- security.htm) –
このメッセージは既に回答済みです[こちら。](http://stackoverflow.com/questions/2138429/hash-and-salt-passwords-in-c-sharp) – Farukh