我需要安全地存储私人用户数据,以便它可以在我的应用启动以及设备重置时保持不变。
这将是一个字符串,我估计最多可以有1000个字符。
我被告知我可以使用RIM KeyStore API。
好吧,我花了几个小时来搜索RIM KeyStore API的使用情况。 JDE示例中没有包含任何有用的内容。
看起来这在BB开发中是罕见的,因此几乎没有官方信息。
我看了this和this。从我理解的那些对我来说最好的选择是使用PersistableRIMKeyStore(它会在设备重置期间持续存在)。但是我无法弄清楚实现到底应该是什么。
任何人都可以帮助您提供示例代码或指向某些指南吗?也许我的任务有更好/更简单的方式/方法,所以,请让我知道。
提前多多感谢!!!
答案 0 :(得分:1)
如果您使用的商店与“PersistentStoreDemo”相同,如果您不知道可以通过转到文件 - >导入 - >黑莓样本,您可以加密商店中的信息。除此之外,如果用户启用了内容保护,您可以使用ContentProtectedHashtable自动知道该信息将被加密。因此,在没有内容保护的情况下,信息将被加密一次,随着它的开启,它将被加倍加密,并且存储有难以猜测的应用程序命名空间的长哈希(显然,因为要注册商店,您需要它)。以下是我使用的内容:
package ca.dftr.phillyd.lib.persistables;
import net.rim.device.api.system.ApplicationDescriptor;
import net.rim.device.api.util.ContentProtectedHashtable;
import net.rim.device.api.util.Persistable;
/**
* Basic class for storing application specific information.
* Information such as application settings or whether the license agreement was accepted.
* For more complex and specific classes they should be implemented separately and implement persistable
* @author deforbes
*/
public class AppInfo extends ContentProtectedHashtable implements Persistable {
private String _appName = null;
private String _version = null;
/**
* Constructs the application info, creates and persists a hashtable for application settings.
* @param uniqueHexAppIdentifier Can be automatically created in resource class (BUNDLE_ID) or generated using other unique information.
*/
public AppInfo() {
ApplicationDescriptor appDesc = ApplicationDescriptor.currentApplicationDescriptor();
_appName = appDesc.getName();
_version = appDesc.getVersion();
}
/**
* Get the Name of the application
* @return The application name from the app descriptor
*/
public String getName()
{
return _appName;
}
/**
* Get the Version of the application
* @return The application version from the app descriptor
*/
public String getVersion()
{
return _version;
}
}
还有一类常量(如果需要,可以包含在上面)。例如,来自我的PhillyD应用程序:
package ca.dftr.phillyd.lib.persistables;
/**
* Keys for the AppInfo array
* @author deforbes
*/
public class AppInfoKeys {
public static final String QUALITY = "Quality";
public static final String CHANNEL = "Channel";
public static final String CHANNEL_NAME = "Channel_Name";
public static final String SEARCH = "Search";
public static final String LICENSE_ACCEPTED = "isLicenseAccepted";
public static final String VIDEOS_PER_PAGE = "NumPerPage";
public static final Boolean DOWNLOAD_THUMBS = new Boolean(true);
}
答案 1 :(得分:0)
PersistableRIMKeyStore用于保留RIM密钥库。要在重置时保留用户数据,只需要使用PersistentStore,如果要保护详细信息,可以使用ContentProtectedHashtable或ContentProtectedVector。