Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 前往';隐藏&x27;传递短语、初始向量等。。用于在类库中进行加密_C#_Security_Dll_Encryption - Fatal编程技术网

C# 前往';隐藏&x27;传递短语、初始向量等。。用于在类库中进行加密

C# 前往';隐藏&x27;传递短语、初始向量等。。用于在类库中进行加密,c#,security,dll,encryption,C#,Security,Dll,Encryption,我正在向类库(C#2.0)添加一些加密方法,并想知道放置所需的密码短语、salt值和初始化向量的最佳位置。将这些硬编码到DLL中真的是个坏主意吗?还是我应该对它们进行编码并将它们存储在其他地方 谢谢 编辑:进一步的信息-数据库中的个人信息(地址、电话号码等)需要加密,没有银行/医疗类型的信息,所以解决方案不需要太核心。类库将在服务器上用于web应用程序,加密方法将在数据层中使用。如果您硬编码初始化向量并将密钥放入DLL,那么您真的可以完全放弃加密。如果您能告诉我们更多关于您在这里使用加密的原因以

我正在向类库(C#2.0)添加一些加密方法,并想知道放置所需的密码短语、salt值和初始化向量的最佳位置。将这些硬编码到DLL中真的是个坏主意吗?还是我应该对它们进行编码并将它们存储在其他地方

谢谢


编辑:进一步的信息-数据库中的个人信息(地址、电话号码等)需要加密,没有银行/医疗类型的信息,所以解决方案不需要太核心。类库将在服务器上用于web应用程序,加密方法将在数据层中使用。

如果您硬编码初始化向量并将密钥放入DLL,那么您真的可以完全放弃加密。如果您能告诉我们更多关于您在这里使用加密的原因以及需要如何精确访问数据的信息,或许我可以建议您如何使其安全

编辑:您可能希望为此使用公钥加密(RSA算法是安全的,并且完全在.NET framework中实现)。它是不对称的,这意味着它需要不同的密钥来加密(公共)和解密(私有)数据。虽然我仍然不能完全确定您的系统是如何工作的,但我怀疑您只需要将私钥的访问权限限制为那些能够查看数据库信息的人—您当然不希望将其存储在与数据库相同的位置。公钥基本上可以提供给任何人,因为它只允许您加密要放入数据库中的数据(假设对数据库的写访问受到适当限制)。无论如何,这里有一些链接可以帮助您开始:


希望这会有所帮助。

除非您担心您的数据层通过web服务公开,并且您担心可能会截获数据,听起来您只需要在数据库本身上实现加密,而不必担心应用程序。

我想在基本实用程序方法中使用加密,主要用于数据库,也用于xml文件等中的配置数据。。还有其他的事情

无论您使用什么加密,都需要某种密钥或传递短语,我想知道您将这些字符串存储在何处以及如何存储


谢谢。

如果您使用的是公钥加密,那么您将希望自由分发公钥(最有可能),并保持对私钥的访问受到高度限制(仅在您知道安全的存储介质上)。无论哪种方式,在XML文件中都通常将键存储为base64编码字符串。我相信RSACryptoServiceProvider类内置了这样做的功能。

@Noldorin-在问题上方添加的更多信息是,发送到web服务或从web服务发送的任何信息都不会被加密。即使使用SSL,安装在客户端盒上的任何东西都有读取数据的风险。这就是我直接说的原因,除非这是他问这个问题的原因。没有web服务,但将使用的方法不仅仅是DB数据。感谢您提供的信息。我建议您加密配置文件,因为它们以纯文本形式存储,MSDN上有一些示例说明了如何做到这一点。如果DAL是本地的,则不需要在DAL层中使用加密,数据库本身只需要加密。