Encryption 如何在没有app.config的情况下加密连接字符串

Encryption 如何在没有app.config的情况下加密连接字符串,encryption,app-config,connection-string,Encryption,App Config,Connection String,假设app.config出于任何原因不是一个选项 如何在程序集本身或另一个app.config(如XML文件)中存储加密的连接字符串 (我认为这无关紧要,但这是用于Excel 2003的COM外接程序。)这可以很好地应用于独立存储 您可以使用System.Security.Cryptography命名空间中的类来 加密/解密文件。然而,你遇到了另一个问题,你会在哪里 你把钥匙存起来了吗?如果将其存储在程序集中,则可以删除该程序集 浏览以找到密钥,然后其他人可以使用它来解密您的密码 数据 一定要退

假设app.config出于任何原因不是一个选项

如何在程序集本身或另一个app.config(如XML文件)中存储加密的连接字符串


(我认为这无关紧要,但这是用于Excel 2003的COM外接程序。)

这可以很好地应用于独立存储


您可以使用System.Security.Cryptography命名空间中的类来 加密/解密文件。然而,你遇到了另一个问题,你会在哪里 你把钥匙存起来了吗?如果将其存储在程序集中,则可以删除该程序集 浏览以找到密钥,然后其他人可以使用它来解密您的密码 数据

一定要退房


听起来像是ProtectedData类的一个很好的用途

调用Protect并传入包含连接字符串的字节数组将返回加密数据的字节数组(然后可以将其转换为base64并存储在本地文件中)

调用Unprotect并传入包含加密连接字符串的字节数组将返回包含明文连接字符串的字节数组。然后只需使用Convert to ASCII或UTF-8等即可


显然,如果攻击者获得对运行应用程序的用户帐户的访问权限,他们将能够恢复字符串,但它提供的安全性比将加密字符串存储在程序集中稍微高一点(这样可以在不获得对用户帐户的访问权限的情况下进行恢复).

这是winform应用程序、web应用程序还是其他应用程序?@Hansmukh:Excel 2003的COM外接程序。对,一个主要问题是如何保护密钥。我不会说这是一个主要问题,我会说这是一个不可能的问题。如果你的程序集有密钥,那么攻击者就有密钥。你可以让它变得困难,但这只是一个问题“通过模糊实现安全”保护连接字符串的不是加密,而是您可能将密钥隐藏得足够好,不值得攻击者使用。如果值得,他们会找到密钥。