C#

2015-09-13 8 views
8

kullanarak kimlik bilgilerini saklamak ve almak için Win10 üzerinde çalışmak üzere bir C# programı oluşturun. Bu programdan (hesaplama sonuçları) e-postaları sadece bir tuşa basarak göndermek istiyorum. Ben C# özellikleri içinde e-posta adresi ve konu: vb koymak, ama ben programın herhangi bir yerinde net bir metin şifre koymak istemiyorum, VE kullanıcı parola yazmak zorunda istemiyorum Her posta gönderildiğinde sunucu için.C#

Bu yapılabilir mi?

Eğer öyleyse, nasıl (genellikle)?

Programın başlatılması sırasında okunacak bir veri dosyasındaki şifrelenmiş parola dahil olmak üzere tüm bu e-posta bilgilerini koymayı düşünüyordum.

Ya da belki Win10 ... bunun için bir tesis vardır

cevap

14

Windows Kimlik Yönetimi API kullanabilirsiniz. Bu şekilde, kullanıcı için sadece bir kez parola soracak ve daha sonra Windows Credentials Manager'da parolayı saklayacaksınız. Bir dahaki sefere uygulamanız başladığında ve şifreyi kullanması gerektiğinde Windows Kimlik Bilgileri Yöneticisi'nden okuyacaktır. Pinvoke (credwrite, CredRead, example here) aracılığıyla Windows Kimlik Yönetimi API'sini doğrudan kullanabilirsiniz veya C# sarmalayıcıyı kullanmak istiyorsanız CredentialManagement'u kontrol edebilirsiniz.

Örnek kullanım:

public class PasswordRepository 
{ 
    private const string PasswordName = "ServerPassword"; 

    public void SavePassword(string password) 
    { 
     using (var cred = new Credential()) 
     { 
      cred.Password = password; 
      cred.Target = PasswordName; 
      cred.Type = CredentialType.Generic; 
      cred.PersistanceType = PersistanceType.LocalComputer; 
      cred.Save(); 
     } 
    } 

    public string GetPassword() 
    { 
     using (var cred = new Credential()) 
     { 
      cred.Target = PasswordName; 
      cred.Load(); 
      return cred.Password; 
     } 
    } 
} 

Bence iyi bir fikir değil muhtemelen uygulama kodunda şifre çözme anahtarı gömmek olacaktır şifresini şifrelemek bile, istemci makinelerde dosyalarında şifreleri saklamak önermiyoruz .

+0

Teşekkür ederiz. Açık. – Erik