私はこれまでパスワードを暗号化したことがありません。これは、この記事の助けを借りて、私がそれを行うために思いついたものです。記事には塩が含まれていなかったので、私はそれを自分で理解する必要がありました:
UTF8Encoding encoder = new UTF8Encoding();
byte[] salt = new byte[8];
new Random().NextBytes(salt);
byte[] encodedPassword = encoder.GetBytes(txtPassword.Text);
byte[] saltedPassword = new byte[8 + encodedPassword.Length];
System.Buffer.BlockCopy(salt, 0, saltedPassword, 0, 8);
System.Buffer.BlockCopy(encodedPassword, 0, saltedPassword, 8, encodedPassword.Length);
byte[] encryptedPassword = new MD5CryptoServiceProvider().ComputeHash(saltedPassword);
byte[] saltedEncryptedPassword = new byte[8 + encryptedPassword.Length];
System.Buffer.BlockCopy(salt, 0, saltedEncryptedPassword, 0, 8);
System.Buffer.BlockCopy(encryptedPassword, 0, saltedEncryptedPassword, 8, encryptedPassword.Length);
データベースにsaltedEncryptedPassword
保存されます。お気づきかもしれませんが、ソルトが関係している場所でバイト配列を連結するのに問題がありました。私はこれを正しく行いましたか、それとももっと良い方法がありますか?ありがとう。