我正在使用 C#(.NET 4.0、SQL CE 4.0 数据库)编写一个小型企业应用程序。数据库是加密的(SQL CE 支持数据库加密),但据我所知,来自http://msdn.microsoft.com/en-us/library/aa257373(v=sql.80).aspx密码:
最长可达 40 个字符。可以包含字母、符号、数字或组合。无法恢复。
我的用户将输入应用程序的密码,这可能不会很复杂和安全。因此,我想以某种方式修改用户密码以创建更安全的数据库加密密码。据我所知,有Rfc2898DeriveBytes Class,它从密码中派生字节。但是我需要有效字符(SQL Server CE 密码的允许字符?)作为数据库密码,这意味着我可能无法使用toBase64String()。
到目前为止,我的想法是为数据库创建一个随机且安全的密码并将其保存到一个文件中,该文件将使用 AES256 加密,密钥来自用户密码。有没有更好的方法来做到这一点?
另外,我怎样才能实现每个拥有自己的应用程序密码的多个用户可以使用相同的数据库密码访问同一个数据库?
感谢您的时间和回答