在C#Settings.Settings中加密字符串

在C#Settings.Settings中加密字符串,c#,string,encryption,save,settings,C#,String,Encryption,Save,Settings,我有一个密码,保存在Settings.Settings文件中 因为它是一个密码,我需要加密它 我的可能性是什么?我怎样才能完成这样的任务? 可以对字符串进行加密吗?如何对其进行解密?我首先要问的是,您的应用程序中是否需要管理员密码?如果答案是肯定的,那么这取决于你想做什么。如果您需要使用密码,那么您可以使用aspnet_regis对配置文件的部分进行加密,并能够再次恢复它们 如果密码永远不会被使用,也就是说,你只是希望有人以管理员身份登录,并且你想检查密码是否正确,那么最好的方法是satti

我有一个密码,保存在
Settings.Settings
文件中

因为它是一个密码,我需要加密它

我的可能性是什么?我怎样才能完成这样的任务?
可以对字符串进行加密吗?如何对其进行解密?

我首先要问的是,您的应用程序中是否需要管理员密码?如果答案是肯定的,那么这取决于你想做什么。如果您需要使用密码,那么您可以使用aspnet_regis对配置文件的部分进行加密,并能够再次恢复它们

如果密码永远不会被使用,也就是说,你只是希望有人以管理员身份登录,并且你想检查密码是否正确,那么最好的方法是satting,这基本上是一种单向加密,意味着没有人可以恢复你的密码。当您来验证时,只需重复该过程,并根据您的salt密码验证结果

您可以加密密码,但您的代码需要内置解密密钥。所以它不是很安全。任何反汇编你的代码的人在获得密码之前都需要多做一步


您最好使用广告服务帐户,或其他为此目的而设计的安全机制。安全是硬的;除非万不得已,否则不要自己滚

选项1:您可以使用protect对其进行加密,或者如果它是ASP.NET应用程序,您可以使用aspnet_regiis对其进行加密,iirc aspnet_regiis在封面下使用ProtectSection,因此理论上,如果您想在常规应用程序上使用它,您可以在命令行中使用它。可以像下面这样做,以清除msdn文章中的所有杂物

// you will need to add ref to System.Configuration
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Get the section.
UrlsSection section = (UrlsSection)config.GetSection("MyUrls");


// Protect (encrypt)the section.
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");

config.Save(ConfigurationSaveMode.Full);
选项2:写下你自己的加密解密机制,看看如何做到这一点

选项3:使用(来自System.Security.Cryptography)类使用用户特定或机器特定的加密进行加密。这很简单,这样就可以了

byte[] aditionalEntropy = {9, 8, 7, 6, 5};
byte[] secret = {0, 1, 2, 3, 4, 1, 2, 3, 4};

byte[] protectedBytes = ProtectedData.Protect(secret, aditionalEntropy, DataProtectionScope.CurrentUser);
byte[] originalSecret = ProtectedData.Unprotect(protectedBytes, aditionalEntropy, DataProtectionScope.CurrentUser);

请注意,方法#1使用机器密钥进行加密,因此只能在加密的机器上读回,因此任何在同一台机器上运行应用程序的用户都可以读回。方法#3基于用户密钥(特定于机器iirc),因此限制性最强。如果要在一台计算机上加密并使其在不同的计算机上可读,则需要使用选项2

将解密密钥保存在哪里?这是WinForms吗?您需要对密码进行散列并存储散列值。然后对用户输入的密码进行散列,看看它是否与存储的散列匹配。嗨,这是第一个:D问题,我是一个初学者,我真的不知道如何应用你给我的MSDN链接,你有什么想法吗?按照我的理解,试试这个链接,一旦你加密了它,程序会在需要时自动解密。非常感谢,你知道我必须如何修改“UrlsSection”以便编写类似于Properties.settings.default.Adminpassword的内容吗?这是我试图加密的部分?@gbbb try这应该是你想要的