0

私は C# wpf プログラミングの初心者ですが、MySQL データベースに接続してパスワードをハッシュしようとしています。残念ながら、アルゴリズムを実装しているときに、次のコードでエラーが発生しました。

byte[] plainTextWithSaltBytes = new byte[plainTextBytes.Length + saltBytes.Length];
salt.CopyTo(plainTextWithSaltBytes, 0);
plainText.CopyTo(plainTextWithSaltBytes, salt.Length); 

エラーは次のとおりです。

Error: no overload for method 'Copy To' takes 2 arguments Exceptions: System.ArgumentNullException System.ArgumentOutOfRangeException
enter code here

ひょっとして、このエラーの原因とその修正方法をご存知ですか?

4

2 に答える 2

2

plainTextBytesではなく、コピーする必要がありますplainText

   byte[] plainTextWithSaltBytes = new byte[plainTextBytes.Length + saltBytes.Length];
   salt.CopyTo(plainTextWithSaltBytes, 0);
   plainTextBytes.CopyTo(plainTextWithSaltBytes, salt.Length); 
于 2012-05-16T23:06:01.447 に答える
1

単純なハッシュを実行する必要がある場合は、次のコードでパスワードを暗号化できます。

String GetEncryptedPassword (String prmUser, String prmPassword)
{
    // Concatenating the password and user name.
    String encryptedPassword = prmUserName + prmPassword;

    // Converting into the stream of bytes.
    Byte[] passInBytes = Encoding.UTF8.GetBytes(encryptedPassword);

    // Encrypting using SHA1 encryption algorithm.
    passInBytes = SHA1.Create().ComputeHash(passInBytes);

    // Formatting every byte into %03d to make a fixed length 60 string.
    return passInBytes.Aggregate(String.Empty, (pass, iter) => pass += String.Format("{0:000}", iter));
}

このコードは、60文字の暗号化されたハッシュを提供します。ただし、これは一方向のアルゴリズムであるため、ハッシュから元のユーザー名とパスワードを再生成することはできないことに注意してください。使用できる暗号化アルゴリズムは他にもいくつかありSystem.Security.Cryptographyます。

于 2012-05-17T01:20:25.717 に答える