我正在为类库(C#2.0)添加一些加密方法,并且想知道放置密码短语,盐值和初始化向量所需的最佳位置.将这些硬编码到DLL中是一个非常糟糕的主意,还是应该对它们进行编码并将它们存储在其他地方?
谢谢.
编辑:更多信息 - 数据库中的个人信息(地址,电话号码等)所需的加密,没有银行/医疗类型信息,因此解决方案不需要太硬核.类库将在服务器上用于web-app,加密方法将在数据层中使用.
如果你将初始化向量和密钥硬编码到DLL中,那么你真的可以完全放弃加密.如果你能告诉我们更多关于你在这里使用加密的原因以及如何准确访问数据,或许我可以建议你如何使其安全.
编辑:您可能希望为此目的使用公钥加密(特别是RSA算法,因为它已知是安全的,并且完全在.NET框架中实现).它是非对称的,这意味着它需要不同的密钥来加密(公共)和解密(私有)数据.虽然我仍然不能完全确定您的系统是如何工作的,但我怀疑您只需将访问私钥的权限限制为那些能够查看数据库信息的人 - 您当然不希望将其存储在与数据库相同的位置.公钥基本上可以给任何人,因为它只允许您加密要放入数据库的数据(假设对数据库的写访问权限得到了适当的限制).无论如何,这里有一些链接,以帮助您入门:
在C#中实现RSA
http://www.dotnetspider.com/resources/692-RSA-Encryption-C.aspx
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx
希望有所帮助.