2012-02-15 170 views
1

如果我創建從我的黑莓應用程序SQLite數據庫,說A,然後是有可能在黑莓數據庫可以在同一臺設備是由另一appliation乙訪問?如果是的話,那麼我怎麼才能實現proection,以便只有創建sqlite數據庫的應用程序才具有訪問權限?黑莓數據庫保護

p.s.看看這個http://docs.blackberry.com/en/developers/deliverables/17952/Protecting_a_SQLite_database_1219777_11.jsp

我不完全理解的加密和保護部分樣品。如果有人能夠對此提供暗示,那將非常有幫助。

在此先感謝

回答

0

所以,感謝seand我能夠創建一個受保護的數據庫...這裏是我的代碼

  URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/MyEnProDatabase.db"); 
      DatabaseSecurityOptions dbso = new DatabaseSecurityOptions(true); 

      CodeSigningKey codeSigningKey = CodeSigningKey.get(this); 
      Database d = DatabaseFactory.create(myURI,dbso); 
      d.close(); 
      DatabaseFactory.encrypt(myURI, new DatabaseSecurityOptions(codeSigningKey)); 

我用文件簽名應用程序簽署了鱈魚。然後,我寫了一個簡單的程序來刪除這個數據庫...請注意,這個新的應用程序不知道我的KEY文件在上面的創建數據庫應用程序中使用。當我運行它時,它能夠刪除數據庫。但是這不會發生,對吧?由於數據庫是一個受保護的數據庫,它應該只由使用相同的密鑰簽名的應用程序訪問...

我缺少什麼嗎?

3

所有(不平凡)BB的應用程序在真實設備上運行需要有一個代碼簽名密鑰。 這個例子談到的數據庫加密使用密鑰,以防止其他應用程序訪問它(因爲他們不知道你的密鑰)

+0

非常感謝小費。 CodeSigningKey = CodeSigningKey.get(CodeModuleManager.getModuleHandle(「SQLiteDemo」),「XYZ」);如果你看到代碼示例,這裏是什麼「XYZ」。這與我在發佈前簽署應用程序時使用的密鑰相同嗎? – arin 2012-02-15 09:44:17

+1

http://supportforums.blackberry.com/t5/Java-Development/Signer-ID-BlackBerry-Signing-Authority-Tool/td-p/53070 – seand 2012-02-15 14:45:21

+0

非常感謝!我會盡快通過它,並儘快回覆您的理解。 – arin 2012-02-16 06:34:46