window.runtime 属性window.runtime.flash.data.EncryptedLocalStore
继承EncryptedLocalStore Inheritance Object

EncryptedLocalStore 类提供了一些方法,用于在 AIR 应用程序的加密本地数据存储中设置和获取对象。永久加密的本地存储可用于安装在用户计算机上的每个 AIR 应用程序。这允许您以加密格式保存和检索存储在用户本地硬盘驱动器上的数据,其他应用程序或用户无法解密这些数据。独立的加密本地存储用于每个 AIR 应用程序,每个 AIR 应用程序对每个用户使用独立的加密本地存储。

您可能想使用加密的本地存储来存储必须安全的信息,如用于 Web 服务的登录凭据。

在 AIR Debug Launcher (ADL) 中测试应用程序时,该应用程序使用的加密本地存储不同于已安装的 AIR 应用程序所使用的加密本地存储。

AIR 使用 Windows® 上的 DPAPI 和 Mac® OS® 上的 KeyChain 将加密的本地存储与每个应用程序和用户相关联。加密的本地存储使用 AES-CBC 128 位加密。

加密的本地存储中的信息仅可用于应用程序安全沙箱中的 AIR 应用程序内容。

加密的本地存储中的项目用字符串进行标识。所有项目都存储为字节数组数据。

若存储的数据超过 10 MB,加密本地存储将进行得更慢。

当卸载 AIR 应用程序时,卸载程序不会删除存储在加密本地存储中的数据。

加密的本地存储数据存放在用户的应用程序数据目录的子目录中,该子目录的路径为 Adobe/AIR/ELS/ 后面跟随应用程序 ID。

查看示例



属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
getItem(name:String):ByteArray
[静态] 返回加密本地存储中具有给定名称的项目的数据。
EncryptedLocalStore
 Inherited
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。
Object
 Inherited
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。
Object
  
removeItem(name:String):void
[静态] 从加密本地存储中删除具有给定名称的项目。
EncryptedLocalStore
  
[静态] 清除整个加密本地存储,从而删除所有数据。
EncryptedLocalStore
  
setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void
[静态] 将具有给定名称的项目设置为所提供的 ByteArray data。
EncryptedLocalStore
 Inherited
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。
Object
 Inherited
toString():String
返回指定对象的字符串表示形式。
Object
 Inherited
valueOf():Object
返回指定对象的原始值。
Object
方法详细信息
getItem()方法
function getItem(name:String):ByteArray

返回加密本地存储中具有给定名称的项目的数据。如果不存在具有指定名称的项目,则此方法返回 null

参数

name:String — 加密的本地存储中的项目的名称。

返回
ByteArray — ByteArray 数据。如果没有用于所提供的 name 的数据,则该方法返回 null
removeItem()方法 
function removeItem(name:String):void

从加密本地存储中删除具有给定名称的项目。

参数

name:String — 加密的本地存储中的项目的名称。

reset()方法 
function reset():void

清除整个加密本地存储,从而删除所有数据。

setItem()方法 
function setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void

将具有给定名称的项目设置为所提供的 ByteArray data

参数

name:String — 加密的本地存储中的项目的名称。
 
data:ByteArray — 数据。
 
stronglyBound:Boolean (default = false) — 如果设置为 true,则存储的项目除了绑定到应用程序的发行者 ID 外,还会强绑定到 AIR 应用程序的数字签名和位。如果执行调用的 AIR 应用程序的位与执行存储的应用程序的位不匹配,则针对此项目对 getItem() 的后续调用会导致运行时异常。如果您更新应用程序,它将无法读取以前写入到加密本地存储中的强绑定数据。

默认情况下,AIR 应用程序无法读取其他应用程序的加密本地存储。stronglyBound 设置提供额外绑定(到应用程序位中的数据),以阻止攻击者应用程序试图通过尝试劫持应用程序发行者 ID 来读取应用程序的加密本地存储。

示例
EncryptedLocalStore.1.as

下面的代码将一个字符串存储在加密的本地存储中,检索该字符串,然后删除该字符串:

注意:要测试此示例,请执行以下操作:

<html>
    <head>
      <script src="AIRAliases.js" />
      <script>
        function init() 
        {
            var str = "Bob";
            var bytes = new air.ByteArray();
            bytes.writeUTFBytes(str);
            air.EncryptedLocalStore.setItem("firstName", bytes);
            
            var storedValue = air.EncryptedLocalStore.getItem("firstName");
            air.trace(storedValue.readUTFBytes(storedValue.length)); // "Bob"
            
            air.EncryptedLocalStore.removeItem("firstName");
        }
      </script>
    </head>
    <body onload='init()'>
    </body>
</html>