使用 EncryptedLocalStore 类的
setItem()
静态方法将数据存储在本地存储区中。数据存储在哈希表中(使用字符串作为键,以字节数组的形式存储数据)。
例如,下面的代码将一个字符串存储在加密的本地存储区中:
var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes);
setItem()
方法的第三个参数(即
stronglyBound
参数)是可选参数。如果此参数设置为
true
,则加密本地存储区会将存储的项目绑定到存储 AIR 应用程序的数字签名和位:
var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes, false);
对于将
stronglyBound
设置为
true
后存储的项目,在以后调用
getItem()
时,仅当调用方 AIR 应用程序与存储方应用程序相同时才会成功(前提是应用程序目录中的文件未发生数据更改)。如果执行调用的 AIR 应用程序与执行存储的应用程序不同,则当您对强绑定项目调用
getItem()
时,该应用程序将引发 Error 异常。如果您更新应用程序,则该应用程序将无法读取先前写入到加密的本地存储区中的强绑定数据。忽略在移动设备上将
stronglyBound
设置为
true
;始终将该参数视为
false
。
如果将
stronglyBound
参数设置为
false
(默认值),则只有发行商 ID 需要保持不变,供应用程序读取数据。应用程序的位可以更改(需由同一发行商对这些位进行签名),但不需要与存储数据的应用程序中的位完全相同。如果更新后的应用程序与原始应用程序的发行商 ID 相同,则可继续访问这些数据。
注:
实际上,将
stronglyBound
设置为
true
不会增加任何额外数据保护。“恶意”用户仍可更改应用程序,从而访问存储在 ELS 中的项目。而且,无论将
stronglyBound
设置为
true
还是
false
,保护数据免受外部非用户威胁的强度都是一样的。出于以上原因,建议不要将
stronglyBound
设置为
true
。