2011-05-16 85 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進行加密。

我知道這正是你想要的,但至少應該指出你在正確的方向。