私はVisual Studioでシンプルなログイン登録Windowsアプリケーションをコーディングしていましたので、C# この登録ページにはいくつかのフィールドがあり、コードは非常にシンプルですバリデーションに関連することはしないでください。 私は基本的に別のテキストボックスにC#と出力にSHA1を使用してパスワードをハッシュしようとしていますが、私はここではいくつかの未知の文字にSHA1でのパスワード暗号化で奇妙な結果が出る
を取得していますが、私のコード
private void button1_Click(object sender, EventArgs e)
{
if (username.Text.Trim()=="" || password.Text=="" || passwordc.Text=="" || fname.Text == "" || lname.Text == "" || birthday.Text == "")
{
MessageBox.Show("Please fill all the fields!");
}
else if (password.Text!=passwordc.Text) {
MessageBox.Show("Passwords don't match !");
}
else
{
String passwd="";
passwd = password.Text;
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(passwd);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] passbyte = sha.ComputeHash(bytes);
string pass = System.Text.Encoding.UTF8.GetString(passbyte);
textBox1.Text = pass;
}
https://i.stack.imgur.com/SOPit.png
あるものはあります間違っているか、これは通常のハッシングですか?私はちょっと混乱している。
ありがとうございました
ありがとうございました。 しかし、私はその行を考えていた string pass = System.Text.Encoding.UTF8.GetString(passbyte)はそれをテキストに変換するものでした。なぜそれを追加したのですか?それは間違っていますか? – Issam
@IssamバイトがUTF8文字を表す場合にのみ機能します。ハッシュ結果はありません。 – itsme86
"また、SHA256に切り替えることを検討してください。パスワードハッシングで必要となる主なセキュリティ要因は低速です。 pbkdf2、bcrypt、scryptのようなデザインは、この目的にはより適切です。また、それらのデザインにはすでに塩が組み込まれています。詳細については、この[netsecスレッド](https://www.reddit.com/r/netsec/comments/5ya6uw/multiple_vulnerabilities_discovered_in_dna/)を参照してください。 – TheGreatContini