2011-05-16 84 views
12

我在Windows Mobile中使用System.Data.SQLite进行SQLite。它具有内置的加密支持。我发现了Windows Phone 7的许多SQLite实现。但是,它们都没有内置的加密支持。任何人都知道支持加密的Windows Phone 7的SQLite实现?Windows Phone 7 - 带加密的SQLite

+0

我已经在codeplex站点(http://sqlitewindowsphone.codeplex.com/)开始新的讨论。等待作者的回复。 – 2011-05-23 08:55:51

+0

你想要加密的是什么?整个数据库? – 2011-05-31 18:21:26

+1

你可以得到SqlCipher - 一个开源SQLite变种与crypto suppoort。标准软件包针对的是Unix环境,但我读过Windoze(桌面)版本的传言。我自己做了一个端口到Windows桌面,这不是很难,但它需要一些加密知识,我做的版本是一种破解。 (可访问的Windows桌面加密界面相当丑陋,相当不适合广泛使用 - 并非真正准备好迎接“黄金时段”。移动实现中可能会有一些更好的界面。) – 2011-06-01 01:08:13

回答

0

在Windows Phone 7中似乎没有任何API可以让您基于类似于DPAPI的用户凭证加密/解密数据,因此您必须自己动手。该documentation表明,以下算法都可以在Windows Phone 7:

  • AES
  • HMACSHA1
  • HMACSHA256
  • Rfc2898DeriveBytes
  • RSA
  • SHA1
  • SHA256

这些算法应该提供创建一个体面的加密模式所需的全部内容,并且应该足够好,以便加密数据库模式中的敏感列而不是整个数据库。

那么唯一的问题就是看看使用什么键。如果有可能要求用户输入密码(这很大程度上取决于您正在构建的应用程序的类型),那么您可以使用Rfc2898DerivedBytes从用户输入中派生密码。否则,您可以从某些设备数据创建密钥。 (请参阅:How do I get a symmetric key in Windows Phone 7?)派生密钥后,可以使用AES进行加密。

我知道这正是你想要的,但至少应该指出你在正确的方向。