2016-12-01 6 views
-3

私はパブリッククラスの戻り値を変更したいと思います。公開文字列を返すテキストを編集する方法?

私はMD5を暗号化したいと思っています。 どうすればいいですか? msdn.microsoft.comで検索しましたが、私は検索しませんでした。 :(

 public string Password { 
     get { return SystemProccess.MD5Encrypt(Password); } 
    } 
+0

「私はmsdnで検索しました」、何を検索しましたか?プロパティを書く方法は? 'System.Security.Cryptography.MD5'の使い方は? 'c#MD5'のgoogleの最初の結果を参照してください:) –

+0

ハッシュ関数を使うだけでは不十分です。ちょうど塩を追加するだけでセキュリティを改善することはほとんどありません。代わりに、約100msの持続時間の間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存してください。 'PBKDF2'、' password_hash'、 'Bcrypt'などの関数を使用します。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。ユーザーを保護することが重要です。安全なパスワード方法を使用してください。 – zaph

答えて

1

それはあなたが循環参照を持っている可能性があるように見えます。あなたはプレーンテキストでパスワードを設定するには、1を第二の特性を使用したい場合があり、そして他は暗号化されたものを取得する。

public string Password { get; set; } 

public string EncryptedPassword { 
    get { return GetMd5Hash(Password); } 
} 

は、私はあなたのクラスに以下を追加し

using System; 
using System.Security.Cryptography; 
using System.Text; 

。あなたは適切な名前空間を含めることを確認してください。https://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs.110).aspx。MSDNからハッシュを生成するための次のコードの方法を発見したと。

static string GetMd5Hash(MD5 md5Hash, string input) 
{ 

    // Convert the input string to a byte array and compute the hash. 
    byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); 

    // Create a new Stringbuilder to collect the bytes 
    // and create a string. 
    StringBuilder sBuilder = new StringBuilder(); 

    // Loop through each byte of the hashed data 
    // and format each one as a hexadecimal string. 
    for (int i = 0; i < data.Length; i++) 
    { 
     sBuilder.Append(data[i].ToString("x2")); 
    } 

    // Return the hexadecimal string. 
    return sBuilder.ToString(); 
} 

元のパスワードを保存しない場合は、セキュリティのためにセッターを使用することができます。このプロパティでは、プライベートフィールドを使用して暗号化された値を格納およびアクセスするので、暗号化されていない元のパスワードは保存されません。

private string _EncryptedPassword = null; 
public string EncryptedPassword 
{ 
    get { return _EncryptedPassword ; } 
    set { _EncryptedPassword = GetMd5Hash(value); } 
} 

これが役立つかどうか教えてください。

+0

'Convert.ToBase64String(data)'? 'BitConverter.ToString(data)'?彼らがもっとシンプルだと思いませんか? –

+0

あなたは正しいです。 OPはMSDNに言いましたので、私はチュートリアルとしてそれを含めたいと思っていましたが、ちょっと日付のついたものを見つけたに違いありません。 –

+0

彼はMD5暗号化についても言及しました。それはBase64と同じですか?私は暗号に精通していません。 –

関連する問題