我正在爲我兄弟的公司建立一個網站。網站上最重要的元素是郵件功能。訪問者可以使用該系統向我的兄弟發送電子郵件,這一點很重要。所以我用這個代碼:如何在代碼中保護密碼c#電子郵件客戶端
message.From = new MailAddress("[email protected]");
message.To.Add(new MailAddress("emailaddress"));
message.CC.Add(new MailAddress("emailaddress"));
SmtpClient client = new SmtpClient("smtp.live.com", 587);
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("emailaddress","password");
client.Send(message);
該代碼工作正常,但有一個問題:我需要填寫我的密碼,我不想這樣做。有沒有辦法使用像MD5散列(或其他類型的加密)或其他東西來保護我的密碼?
感謝您提供這些信息,而且我已經考慮過使用僅用於向我的兄弟發送電子郵件的帳戶。 – Max
@EricJ .NET 4版的['NetworkCredential'](http://msdn.microsoft.com/en-us/library/dd783746%28v=vs.100%29.aspx)有一個構造函數, SecureString'](http://msdn.microsoft.com/en-us/library/system.security.securestring%28v=vs.100%29.aspx)的密碼 - 你是說這不能用於SMTPClient是否需要純文本密碼? (我沒有嘗試過,我只是感興趣) – Bridge
@Bridge:NetworkCredential適用於「基於密碼的身份驗證方案(如基本,摘要,NTLM和Kerberos)中的證書」。我不確定它是否適用於SMTPClient,但在一天結束時,純文本將覆蓋(希望是SSS保護的)連線,就像純文本最終會通過網絡進行基本Web認證一樣(我知道NetworkCredential支持)。 SecureString提供了額外的好處,即字符串在使用後不會留在系統內存中,而是被主動覆蓋。如果服務器被黑客攻擊,這可以幫助最大限度地減少暴露。 –