用以提供擴(kuò)展對象符號數(shù)據(jù)的方法及設(shè)備的制造方法
【專利摘要】在所描述的實例中,一種實例性設(shè)備(206)包含:數(shù)據(jù)處置器(302),其具有用以接收對象數(shù)據(jù)的第一輸入及用以輸出所述對象數(shù)據(jù)的對象符號鍵?值對的第一輸出;字符串處理器(304),其具有耦合到所述第一輸出的第二輸入及用以傳達(dá)不具有字符串文字的所述對象符號鍵?值對的第二輸出;及散列運算與加密處置器(306),其具有耦合到所述第二輸出的第三輸入及第三輸出,所述第三輸出用以傳達(dá)以私鑰簽名的所述鍵?值對、用以傳達(dá)以公鑰加密的所述鍵?值對,且用以在所述經(jīng)加密鍵?值對的關(guān)鍵字中傳達(dá)所述經(jīng)加密鍵?值對被加密的指示。
【專利說明】
用從提供擴(kuò)展對象符號數(shù)據(jù)的方法及設(shè)備
技術(shù)領(lǐng)域
[0001] 本發(fā)明一般來說設(shè)及對象符號數(shù)據(jù),且更特定來說設(shè)及用W提供擴(kuò)展對象符號數(shù) 據(jù)的方法及設(shè)備。
【背景技術(shù)】
[0002] 在網(wǎng)絡(luò)通信(例如,因特網(wǎng)通信)中,使用利用人類可讀文本的通信標(biāo)準(zhǔn)通常是有 益的。此類通信標(biāo)準(zhǔn)通常更易于程序員理解,且可比應(yīng)用程序特定二進(jìn)制格式更靈活。使用 人類可讀文本的一個實例性通信標(biāo)準(zhǔn)是化vaScript對象符號(JSON)JSO閑自常適合于因特 網(wǎng)通信,運是因為其與由許多因特網(wǎng)瀏覽器及其它應(yīng)用程序開箱即用地(out-of-the-box) 支持的化vaScript緊密聯(lián)系。
【發(fā)明內(nèi)容】
[0003] 在所描述的實例中,數(shù)據(jù)處置器具有用W接收對象數(shù)據(jù)的第一輸入及用W輸出所 述對象數(shù)據(jù)的對象符號鍵-值對的第一輸出。字符串處理器具有禪合到所述第一輸出的第 二輸入及用W傳達(dá)不具有字符串文字的所述對象符號鍵-值對的第二輸出。散列運算與加 密處置器具有禪合到所述第二輸出的第=輸入及第=輸出,所述第=輸出用W傳達(dá)W私鑰 簽名的所述鍵-值對、用W傳達(dá)W公鑰加密的所述鍵-值對,且用W在所述經(jīng)加密鍵-值對的 關(guān)鍵字中傳達(dá)所述經(jīng)加密鍵-值對被加密的指示。
【附圖說明】
[0004] 圖1是其中本文中所掲示的實例性方法及設(shè)備可經(jīng)實施W產(chǎn)生及/或解析xJSON 及/或任何其它人類可讀對象符號數(shù)據(jù)文件的實例性環(huán)境的框圖。
[0005] 圖2是圖1的實例性xJSON處置器的實例性實施方案的框圖。
[0006] 圖3是圖2的實例性產(chǎn)生器的實例性實施方案的框圖。
[0007] 圖4是圖2的實例性解析器的實例性實施方案的框圖。
[000引圖5至化是表示可經(jīng)執(zhí)行W產(chǎn)生擴(kuò)展JS0N數(shù)據(jù)的實例性計算機(jī)可讀指令的流程圖。
[0009] 圖9到11是表示可經(jīng)執(zhí)行W解析擴(kuò)展JS0N數(shù)據(jù)的實例性計算機(jī)可讀指令的流程 圖。
[0010] 圖12是經(jīng)結(jié)構(gòu)化W執(zhí)行圖5到11的指令W實施圖2到4的產(chǎn)生器及/或?qū)嵗越馕?器的實例性處理器平臺的框圖。
【具體實施方式】
[0011] 物聯(lián)網(wǎng)(ΙοΤ)指的是將廣泛范圍的裝置加入到因特網(wǎng)的概念。"物"可為任何類型 的裝置或系統(tǒng),其通常包含先前不包含能夠在網(wǎng)絡(luò)(例如因特網(wǎng))上通信的電路的許多裝置 (例如,消費者器具、汽車、生物醫(yī)學(xué)裝置、電力插座、恒溫器及/或其它環(huán)境傳感器)。舉例來 說,咖啡機(jī)可包含嵌入式計算裝置,所述嵌入式計算裝置允許在因特網(wǎng)上唯一地識別咖啡 機(jī)且允許經(jīng)由其它因特網(wǎng)連接的裝置遠(yuǎn)程控制及監(jiān)視實例性咖啡機(jī)。許多ΙοΤ裝置包含低 成本及/或低功率計算裝置W減少添加 ΙοΤ功能性所需的成本及物理空間。
[0012] 盡管使用人類可讀文本來存儲及發(fā)射數(shù)據(jù)對象的JS0N及其它標(biāo)準(zhǔn)(例如,可擴(kuò)展 標(biāo)記語言(XML)、另一種標(biāo)記語言(YAML))(統(tǒng)稱為對象符號數(shù)據(jù))非常適合于與在因特網(wǎng)上 通信的裝置一起使用,但本申請案中所掲示的實例性方法及設(shè)備提供對此類人類可讀格式 的擴(kuò)展W促進(jìn)與有限資源裝置(例如ΙοΤ裝置)一起使用人類可讀協(xié)議。運是有利的,因為所 掲示方法及設(shè)備促進(jìn)與ΙοΤ裝置及/或具有有限計算資源及/或和許多不同裝置通信的任何 其它裝置一起使用合意的對象符號數(shù)據(jù)格式。
[0013] 盡管本文中所掲示的擴(kuò)展非常適合于與ΙοΤ裝置一起使用,但所述擴(kuò)展不限于與 ΙοΤ裝置一起使用及/或由ΙοΤ裝置使用。本文中所掲示的實例是參考擴(kuò)展JS0N描述,在本文 中為了一致而將擴(kuò)展JS0N稱為xJSON?;蛘撸瑪U(kuò)展JS0N可與任何其它內(nèi)容類型名稱一起使用 及/或擴(kuò)展可與任何其它協(xié)議或標(biāo)準(zhǔn)的擴(kuò)展版本一起使用。本文中所掲示的方法及設(shè)備不 限于擴(kuò)展JS0N。而是,擴(kuò)展可與任何類型的基于人類可讀的協(xié)議一起使用來存儲及發(fā)射對 象。
[0014] 在JS0N中,對象由W開和閉大括號分隔的大量鍵-值對表示。關(guān)鍵字表示對象的性 質(zhì),且值識別所述性質(zhì)的值。關(guān)鍵字與值由冒號分開。舉例來說,JS0N中的人對象可在文件 中存儲為:
[0015] {
[0016] "firstName":"John",
[0017] "lastName":"Smith",
[0018] "email":"John.smith@example. com",
[0019] "password"secret化sswordl23)"
[0020] }
[0021 ]在上文實例中,f irstName、lastName、emai 1 及 password 是關(guān)鍵字,且 John、Smith、 John. smith@example. com及secret化sswordl23是值。對象中的關(guān)鍵字可稱為名稱且可與 在將對象存儲于應(yīng)用程序中時(例如,JavaScript應(yīng)用程序中的人對象)存儲值的變量相 關(guān)。因此,JS0N對象提供用人類可讀格式表示W(wǎng)二進(jìn)制或任何其它格式存儲的對象的 方式。
[0022] 本文中所描述的實例性擴(kuò)展包含數(shù)據(jù)封包、對象序列化及散列運算/安全。
[0023] 如本文中所使用,數(shù)據(jù)封包指的是將壓縮算法應(yīng)用于關(guān)鍵字及/或值(例如,使用 GNU Zip(gzip)壓縮關(guān)鍵字及/或值)。當(dāng)接收到xJSON文件時,可識別xJSON文件中的經(jīng)封包 數(shù)據(jù)并將其解壓縮。
[0024] 如本文中所使用,對象序列化指的是將關(guān)鍵字及/或值轉(zhuǎn)換為二進(jìn)制值。在一些實 例中,接著將二進(jìn)制值轉(zhuǎn)換為文本格式(例如,使用Base64二進(jìn)制到文本編碼)。當(dāng)接收到 xJSON文件時,可檢測xJSON文件中的經(jīng)序列化數(shù)據(jù)并將其反序列化/去編組。
[0025] 在一些實例中,散列運算/安全操作是通過產(chǎn)生鍵-值對的值的散列并將散列插入 到關(guān)鍵字中而執(zhí)行。散列可用于通過將存儲于關(guān)鍵字中的散列與針對鍵-值對的值所產(chǎn)生 的散列進(jìn)行比較而確認(rèn)值的內(nèi)容。散列可另外或替代地用于捜索值中所含的數(shù)據(jù)。舉例來 說,可對捜索參數(shù)進(jìn)行散列運算,且可將捜索參數(shù)的散列與存儲于關(guān)鍵字中的散列進(jìn)行比 較w識別匹配,且因此識別匹配捜索參數(shù)的鍵-值對的值。另外或替代地,散列運算/安全還 可包含將關(guān)鍵字及/或值加密及用經(jīng)加密數(shù)據(jù)替換未加密關(guān)鍵字及/或值。當(dāng)接收到xJSON 文件時,可檢測xJSON文件中的經(jīng)加密數(shù)據(jù)并將其解密。
[0026] 在本文中所掲示的實例性方法及設(shè)備中,在將所掲示擴(kuò)展應(yīng)用于JS0N時,在已基 于xJSON擴(kuò)展而產(chǎn)生及/或修改關(guān)鍵字及/或值時,具有xJSON能力的裝置將限定符插入于所 述關(guān)鍵字及/或值中。限定符向其它具有xJSON能力的裝置指示已應(yīng)用xJSON擴(kuò)展。舉例來 說,可通過向關(guān)鍵字的末尾添加方括號及在方括號中插入限定符(例如,指示已應(yīng)用的特定 擴(kuò)展的限定符)而修改關(guān)鍵字。舉例來說,如果將與字符V'相關(guān)聯(lián)的擴(kuò)展應(yīng)用于先前段落 中所展示的人對象中的鍵-值對,那么xJSON表示可為:
[0027] {
[002引"firstName[x]" :" John",
[0029] "lastName[x]" :"Smith",
[0030] "email[x]":"John.smith@example. com"
[0031] "password[x]" :"secre1:Passwordl23)"
[0032] }
[0033] 限定符可替代地插入于添加到鍵-值對的值的方括號之間(例如,吁irst化me" John[xr )及/或限定符可添加到關(guān)鍵字及值兩者(例如,吁irstName[x]" :" John[yr, "firstName[x]" : {x; V' : "John"})?;蛘?,可將除方括號外的分隔符用于將識別符與關(guān)鍵 字及/或值分開(例如,花括號、單引號、引號、星號)。
[0034] 為了一致,本文中所掲示的實例是參考插入于鍵-值對的關(guān)鍵字中的方括號之間 的xJSON識別符而描述。然而,本發(fā)明不限于用于插入識別符的特定格式,且可使用任何其 它格式(包含上文所描述的那些格式)。
[0035] 將識別符插入于關(guān)鍵字名稱及/或值中確保xJSON表示仍可由支持JS0N但不支持 xJSON的裝置處理(例如,在一些實例中,使用xJSON技術(shù)將不防止使用JS0N但不支持xJSON 的裝置解析xJSON文件,因為xJSON識別符是W與JS0的吾法一致的方式插入)。因此,使用 xJSON將不致使支持JS0N但不支持xJSON的裝置在解析xJSON文件期間失敗。而是,運些非 xJSON裝置將繼續(xù)操作,但不理解擴(kuò)展。此方法增強(qiáng)具有xJSON能力的裝置在其中一些裝置 不支持xJSON的環(huán)境中操作的能力。
[0036] 將識別符插入于關(guān)鍵字中(如本文中所掲示)的額外優(yōu)點允許在選擇性基礎(chǔ)上應(yīng) 用xJSON擴(kuò)展。舉例來說,可將xJSON擴(kuò)展應(yīng)用于整個文件,可將其選擇性地應(yīng)用于文件中的 一或多個對象,或可將其選擇性地應(yīng)用于文件中的一或多個鍵-值對。因此,當(dāng)處理xJSON文 件時,可根據(jù)擴(kuò)展處理在關(guān)鍵字中包含xJSON識別符的鍵-值對,且可使用標(biāo)準(zhǔn)JS0N處理來 處理在關(guān)鍵字中不包含xJSON識別符的鍵-值對。此外,可將擴(kuò)展中的不同者應(yīng)用于文件中 的鍵-值對的子組。舉例來說,在前述實例中:(a)可處理"人"對象(firstName、lastName及 email鍵-值對)W將散列值及用于散列運算的xJSON識別符插入于對應(yīng)關(guān)鍵字中;(b)可對 password鍵-值對進(jìn)行加密及散列運算;及(C)可將加密識別符、散列識別符及散列值插入 于對應(yīng)關(guān)鍵字中。
[0037] 圖1是其中本文中所掲示的實例性方法及設(shè)備可經(jīng)實施W產(chǎn)生及/或解析xJSON 及/或任何其它人類可讀對象符號數(shù)據(jù)文件的實例性環(huán)境100的框圖。所述實例性環(huán)境包含 用W經(jīng)由實例性網(wǎng)絡(luò)104將實例性xJSON數(shù)據(jù)103傳達(dá)到實例性第一裝置106及實例性第二 裝置108的實例性web服務(wù)102。如本文中所使用,短語"在通信中"(包含其變體)涵蓋直接通 信及/或通過一或多個中間組件的間接通信,且不需要直接物理(例如,有線)通信及/或恒 定通信而是另外包含W周期性或非周期性間隔進(jìn)行的選擇性通信W及一次事件。
[0038] 在所說明實例中,實例性web服務(wù)102、實例性第一裝置106及實例性第二裝置108 使用JS0N數(shù)據(jù)文件來交換數(shù)據(jù)。根據(jù)所說明實例,實例性web服務(wù)102及實例性第一裝置106 是具有xjSON能力的,因為其包含用W解析及/或產(chǎn)生基于與本文中所掲示的xJSON相關(guān)聯(lián) 的擴(kuò)展中的至少一者的文件的xJSON處置器110。根據(jù)所說明實例,實例性第二裝置108是不 具有xJSON能力的,因為實例性第二裝置108可解析及/或產(chǎn)生JS0N文件但不包含用于解析 及/或產(chǎn)生具有與本文中所掲示的xJSON相關(guān)聯(lián)的擴(kuò)展的xJSON文件的xJSON處置器110。如 本文中所掲示,盡管實例性第二裝置108不能夠使用與xJSON相關(guān)的擴(kuò)展,但所說明實例的 由實例性web服務(wù)102及/或?qū)嵗缘谝谎b置106輸出的實例性xJSON數(shù)據(jù)103可被成功地進(jìn) 行解析(例如,在不導(dǎo)致解析錯誤的情況下進(jìn)行解析)。
[0039] 在所說明實例中,web服務(wù)102是用于在因特網(wǎng)上供應(yīng)信息的服務(wù)器計算機(jī)?;蛘?, web服務(wù)102可為連接到實例性網(wǎng)絡(luò)104的裝置可與其通信的任何類型的裝置。實例性web月良 務(wù)102將實例性xJSON數(shù)據(jù)103發(fā)送到實例性第一裝置106及/或?qū)嵗缘诙b置108。實例性 web服務(wù)102還可從實例性第一裝置106接收xJSON數(shù)據(jù)及/或從實例性第二裝置108接收 JS0N數(shù)據(jù)。或者,實例性web服務(wù)102可僅能夠接收數(shù)據(jù)(例如,xJSON數(shù)據(jù)及/或JS0N數(shù)據(jù)), 或可僅能夠發(fā)送數(shù)據(jù)(例如,xJSON數(shù)據(jù)103及/或JS0N數(shù)據(jù))。
[0040] 圖1的所說明實例的網(wǎng)絡(luò)104是因特網(wǎng)。或者,網(wǎng)絡(luò)104可為任何類型的局域網(wǎng)、廣 域網(wǎng)、有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、專用網(wǎng)絡(luò)及/或公用網(wǎng)絡(luò)及/或其組合。實例性網(wǎng)絡(luò)104將實例性 web服務(wù)102與實例性第一裝置106及實例性第二裝置108W通信方式禪合。
[0041] 圖1的所說明實例的第一裝置106為ΙοΤ裝置,其包含用W解析及/或產(chǎn)生實例性 xJSON數(shù)據(jù)103的實例性xJSON處置器110。舉例來說,第一裝置106可為啟用網(wǎng)絡(luò)的微處理器 控制器。舉例來說,第一裝置106可為用于MCU應(yīng)用的CC3100SimpleLink?Wi-Fi度<5物聯(lián)網(wǎng) 解決方案或來自Texasitis仕uments?的CC3200SimpleLink?Wi-R?與物聯(lián)網(wǎng)解決方案(單 忍片無線MCU)及/或包含CC3100或CC3200的裝置?;蛘?,第一裝置106可為其中期望使用 JS0N數(shù)據(jù)的任何其它裝置。
[0042] 圖1的所說明實例的第二裝置108可為其中期望使用JS0N數(shù)據(jù)的任何裝置。第二裝 置108包含于圖1的實例性中W說明支持xJSON擴(kuò)展的裝置(例如,實例性web服務(wù)102及實例 性第一裝置106)及不支持xJSO府廣展的裝置可連接到同一網(wǎng)絡(luò)且可彼此通信。舉例來說,當(dāng) W不與JS0N語法沖突的方式實施xJSON擴(kuò)展時,包含至少一些鍵-值對(包含xJSON擴(kuò)展(例 如,XJS0N文件))的JS0N文件(例如,實例性xJSON數(shù)據(jù)103)可由不支持xJSON的裝置在不導(dǎo) 致解析錯誤的情況下進(jìn)行解析。同樣地,支持xJSO府廣展的裝置能夠處理JS0N文件。
[0043] 實例性xJSON處置器110解析及/或產(chǎn)生xJSON文件(例如,根據(jù)JS0N協(xié)議產(chǎn)生且包 含至少一個鍵-值對(包含本文中所掲示的xJSON擴(kuò)展中的一者(例如實例性xJSON數(shù)據(jù)103) 的文件)。連同圖2-起進(jìn)一步詳細(xì)地描述xJSON處置器110的實例性實施方案。盡管圖1圖解 說明實例性web服務(wù)102及實例性第一裝置106包含相同xJSON處置器110,但在其它實例中, 裝置可包含不同X JS0N處置器(例如,實例性web服務(wù)102的X JS0N處置器110可W不同于實例 性第一裝置106的xJSON處置器110的方式實施)。
[0044] 使用xJSON處置器110使得裝置能夠產(chǎn)生xJSON數(shù)據(jù)并解析xJSON數(shù)據(jù)(例如,包含 本文中所掲示的擴(kuò)展的對象符號數(shù)據(jù))。所說明實例的xJSON處置器110促進(jìn)不受現(xiàn)有對象 符號協(xié)議支持的數(shù)據(jù)表示的使用。舉例來說,xJSON處置器110可支持定制原語(例如,非常 適合于與嵌入式裝置(例如ΙοΤ裝置)一起使用的原語)的使用。舉例來說,二進(jìn)制型文字可 輸入為"ObAAAA"或"0ΒΑΑΑΑ",其中V及"Β"指示值為二進(jìn)制文字。在另一實例中,十六進(jìn)制 型文字可輸入為"OxAAAA"或"0XAAAA",其中V'及?'指示值為十六進(jìn)制文字。基于硬件的 文字也可由xJSON處置器110支持。舉例來說,可將識別符添加到關(guān)鍵字及/或值W指示易失 性類型的文字、用于硬件信號類型(輸入、輸出、兩者)的文字及用于信號對象的Ξ態(tài)值。換 句話說,使用附加到關(guān)鍵字及/或值、插入于關(guān)鍵字及/或值中、替換關(guān)鍵字及/或值的部分 的識別符的靈活性允許xJSON處置器110指示關(guān)于關(guān)鍵字及/或值的包含指示值的狀態(tài)(例 如,經(jīng)加密、經(jīng)壓縮、經(jīng)序列化)及/或值的目的(例如,用于硬件信號類型的文字)的信息。
[0045] 盡管圖1的實例性環(huán)境100包含實例性web服務(wù)102、實例性第一裝置106及實例性 第二裝置108,但可使用任何數(shù)目及/或類型的裝置。舉例來說,環(huán)境可能包含兩個裝置及/ 或web服務(wù)、Ξ個裝置及/或web服務(wù)、四個裝置及/或web服務(wù)、數(shù)百個裝置及/或web服務(wù)的 任何組合。
[0046] 圖2是圖1的實例性xJSON處置器110的實例性實施方案的框圖。圖2的實例性xJSON 處置器110包含:實例性接口 202,其用W發(fā)送及/或接收實例性對象符號數(shù)據(jù)200(例如,實 例性xJSON數(shù)據(jù)103);實例性解析器204,其用W解析實例性對象符號數(shù)據(jù)200 W輸出實例性 對象數(shù)據(jù)210;實例性產(chǎn)生器206,其用W從實例性對象數(shù)據(jù)212產(chǎn)生實例性對象符號數(shù)據(jù) 200;及實例性化vaScript解釋器208。盡管參考實例性第一裝置106描述圖2的xJSON處置器 110,但圖2的xJSON處置器110可實施于另一裝置(例如,實例性web服務(wù)102)中。
[0047] 所說明實例的實例性接口 202是網(wǎng)絡(luò)接口 202,其將對象符號數(shù)據(jù)200(例如,實例 性xJSON數(shù)據(jù)103)發(fā)送到網(wǎng)絡(luò)104及/或從所述網(wǎng)絡(luò)及/或從包含xJSON處置器110的裝置的 一或多個其它組件(例如,實例性web服務(wù)102的組件及/或?qū)嵗缘谝谎b置106的組件)接收 所述對象符號數(shù)據(jù)。舉例來說,實例性第一裝置106的xJSON處置器110可接收從實例性web 服務(wù)102檢索的實例性xJSON數(shù)據(jù)103。實例性接口 202將從網(wǎng)絡(luò)104接收的對象符號數(shù)據(jù)200 發(fā)射到實例性解析器204。實例性接口 202將從實例性產(chǎn)生器206接收的對象符號數(shù)據(jù)200發(fā) 射到對象符號數(shù)據(jù)200的所要目的地。舉例來說,用于實例性第一裝置106的xJSON處置器 110的接口 202可將由實例性產(chǎn)生器206產(chǎn)生的實例性對象符號數(shù)據(jù)200發(fā)射到實例性web月良 務(wù) 102。
[0048] 所說明實例的解析器204接收對象符號數(shù)據(jù)200并解析所述數(shù)據(jù)W提取由對象符 號數(shù)據(jù)200表示的對象。解析器204將經(jīng)提取對象數(shù)據(jù)210發(fā)射到實例性化vaScript解釋器 208。舉例來說,返回到上文所論述的實例性人對象,解析器204從xJSON數(shù)據(jù)(例如, f irstName、lastName、emai 1及password)中所包含的鍵-值對檢索人對象的元素且建立發(fā) 射到化vaScript解釋器208的化vaScript人對象。實例性解析器204包含用于解析xJSON數(shù) 據(jù)的功能性,其包含數(shù)據(jù)封包、對象序列化及/或散列運算/安全擴(kuò)展中的一或多者。連同圖 4的框圖一起進(jìn)一步詳細(xì)地描述解析器204的實例性實施方案。
[0049] 所說明實例的實例性產(chǎn)生器206建立對象符號數(shù)據(jù)200 (例如,xJSON文件)文件W 表示從化vaScript解釋器208接收的對象數(shù)據(jù)212。舉例來說,實例性產(chǎn)生器206可基于存儲 于化vaScript解釋器中的人對象而在xJSON中建立實例性人對象。由產(chǎn)生器206產(chǎn)生的對象 符號數(shù)據(jù)200被發(fā)射到接口 202W供發(fā)射到另一裝置(例如,web服務(wù)102)?;蛘撸瑇JSON處置 器110及/或包含xJSON處置器110的裝置可存儲對象符號數(shù)據(jù)200(例如,W供稍后發(fā)射及/ 或處理)。連同圖3的框圖一起進(jìn)一步詳細(xì)地描述實例性產(chǎn)生器206。
[00加 ]所說明實例的JavaScript解釋器208是根據(jù)JavaScript編程語言操作W執(zhí)行 化vaScript應(yīng)用程序或任何其它化vaScript指令的軟件運行時間環(huán)境。所說明實例的實例 性化vaScript解釋器208存儲對象數(shù)據(jù)210及/或212(例如,上文所描述的人對象)。盡管所 說明實例的化vaScript解釋器208使用化vaScript,但化vaScript解釋器208可替代地為可 接收由實例性解析器204輸出的對象及/或?qū)ο蟀l(fā)射到實例性產(chǎn)生器206的任何其它運行 時間環(huán)境。
[0051] 圖3是圖2的實例性產(chǎn)生器206的實例性實施方案的框圖。圖3的實例性產(chǎn)生器206 包含實例性數(shù)據(jù)處置器302、實例性字符串處理器304、實例性散列運算與加密處置器306、 實例性壓縮處置器308及實例性序列化處理器310。
[0052] 實例性數(shù)據(jù)處置器302接收對象數(shù)據(jù)312(例如,從實例性化vaScript解釋器208接 收的實例性對象數(shù)據(jù)212)且產(chǎn)生填充有表示對象數(shù)據(jù)312的xJSON鍵-值對的對象符號數(shù)據(jù) 314。舉例來說,實例性數(shù)據(jù)處置器302可提供接口(例如,應(yīng)用程序編程接口(API)),可通過 所述接口接收產(chǎn)生xJSON文件的請求。實例性數(shù)據(jù)處置器302確定所述請求是否指示欲產(chǎn)生 xJSON文件或是否欲產(chǎn)生包含xJSON擴(kuò)展的JS0N文件。舉例來說,如本文中所詳細(xì)地描述,如 果對象符號數(shù)據(jù)314不需要與不支持xJSON的裝置兼容,那么可將由產(chǎn)生器206輸出的對象 符號數(shù)據(jù)301格式化W由具有xJSON能力的裝置處理(例如,在實例性解析器204將解析文件 且在不存在引號的情況下隱式地評估數(shù)據(jù)時,可排除根據(jù)標(biāo)準(zhǔn)JS0的吾法環(huán)繞關(guān)鍵字及值的 引號)。所說明實例的實例性數(shù)據(jù)處置器302記錄xJSON文件的內(nèi)容類型、創(chuàng)建對象數(shù)據(jù)312 的鍵-值對316(論述單個鍵-值對,但可使用多個鍵-值對)(例如,通過創(chuàng)建針對對象數(shù)據(jù) 312的變量命名的關(guān)鍵字及創(chuàng)建所述變量的值的對應(yīng)值),且將鍵-值對316發(fā)送到實例性字 符串處理器304。
[0053] 圖3的實例性字符串處理器304確定對象符號數(shù)據(jù)314的內(nèi)容類型是xJSON還是標(biāo) 準(zhǔn)JS0N。如果對象符號數(shù)據(jù)314打算由具有xJSON能力的裝置及不具有xJSON能力的裝置進(jìn) 行解析,那么字符串處理器304將圍繞關(guān)鍵字及值的引號插入于鍵-值對316中。如果不期望 與不具有xjSON能力的裝置的兼容性,那么字符串處理器304不插入引號,因為實例性鍵-值 對316的字符串將由具有xJSON能力的解析器(例如,圖2的實例性解析器204)隱式地辨識。 舉例來說,在期望非xJSON兼容性時可產(chǎn)生W下實例性人對象:
[0化4] {
[0055] 吁irstName" : "John",
[0056] "lastName" : "Smith",
[0057] "email":"John.smith@example. com",
[0化引 "password":"secret化sswordl23)"
[0化9] }.
[0060]或者,在不期望及/或不需要非xJSON兼容性時可產(chǎn)生W下實例性人對象:
[0061] {
[0062] firstName:John,
[0063] lastName: Smith,
[0064] email: John.smithiexample. com,
[00化]password: secretF*asswordl23)
[0066] }.
[0067] 實例性字符串處理器304將經(jīng)處理鍵-值對318輸出到散列運算與實例性加密處置 器306。
[0068] 圖3的實例性散列運算與加密處置器306接收經(jīng)處理鍵-值對318且確定經(jīng)處理鍵- 值對318的散列運算及/或加密是否被請求。舉例來說,產(chǎn)生對象符號數(shù)據(jù)314的請求可識別 針對其請求散列運算及/或加密的一或多個鍵-值對及/或?qū)ο?。舉例來說,如果對象包含用 戶名字段及口令字段,那么可針對所有字段請求散列運算,但可僅針對口令字段請求加密。 或者,散列運算與加密處置器306可自動地確定期望散列運算及/或加密(例如,當(dāng)鍵-值對 經(jīng)識別為敏感數(shù)據(jù)(例如口令字段)時)。
[0069] 當(dāng)散列運算及/或加密被請求時,散列運算與加密處置器306確定欲使用的所要密 碼(例如,加密密碼、散列運算密碼、加密密碼與散列運算密碼的組合)。舉例來說,針對執(zhí)行 散列運算及/或加密的請求可識別密碼,及/或?qū)嵗陨⒘羞\算與加密處置器306可使用默 認(rèn)密碼。
[0070] 為了向其它裝置證明經(jīng)處理鍵-值對318的真實性,此實例的散列運算與加密處置 器306使用內(nèi)容所有者(例如,針對其產(chǎn)生xJSON文件的數(shù)據(jù)的所有者)的私鑰對經(jīng)處理鍵- 值對318進(jìn)行簽名W產(chǎn)生經(jīng)加密及/或經(jīng)散列運算鍵-值對320。在此類實例中,經(jīng)加密及/或 經(jīng)散列運算鍵-值對320可由可存取對應(yīng)于私鑰的公鑰的其它裝置驗證。
[0071] 當(dāng)密碼包含加密(例如,與僅包含數(shù)據(jù)簽名相比)時,圖3的實例性散列運算與加密 處置器306針對任何鍵-值對(針對其請求加密)將經(jīng)加密及/或經(jīng)散列運算鍵-值對320加 密。實例性散列運算與加密處置器306使用對應(yīng)于可用于將經(jīng)加密及/或經(jīng)散列運算鍵-值 對320解密的私鑰的公鑰來將經(jīng)加密及/或經(jīng)散列運算鍵-值對320加密。舉例來說,圖2及/ 或4的解析器204可存儲可用于將使用對應(yīng)公鑰加密的數(shù)據(jù)解密的私鑰。
[0072] 實例性散列運算與加密處置器306接著對經(jīng)加密及/或經(jīng)散列運算鍵-值對320進(jìn) 行散列運算(例如,在請求散列運算時對鍵-值對進(jìn)行散列運算)。實例性散列運算與加密處 置器306對用于任何加密數(shù)據(jù)(與在加密之前的原始數(shù)據(jù)相比)的經(jīng)加密值進(jìn)行散列運算。
[0073] 所說明實例的散列運算與加密處置器306將密碼密鑰數(shù)據(jù)插入到所產(chǎn)生的經(jīng)加密 及/或經(jīng)散列運算鍵-值對320中(例如,將所述數(shù)據(jù)插入于xJSON文件中)。密碼密鑰數(shù)據(jù)識 別在將經(jīng)加密及/或經(jīng)散列運算鍵-值對320加密時所使用的一或多個密鑰。舉例來說,密碼 密鑰數(shù)據(jù)可包含用于針對其將公鑰用于將經(jīng)加密及/或經(jīng)散列運算鍵-值對320加密的證書 的識別符,W使得實例性解析器204能夠定位對應(yīng)私鑰W供在將經(jīng)加密及/或經(jīng)散列運算 鍵-值對320解密時使用。密碼密鑰可另外包含用于針對其將私鑰用于對數(shù)據(jù)進(jìn)行簽名的證 書的識別符。在于單個xJSON文件中使用多個密鑰的情況下,可W密碼密鑰數(shù)據(jù)中的順序號 識別每一密鑰。除用于加密密鑰的識別符外,所說明實例的密碼密鑰數(shù)據(jù)還識別用于散列 運算及/或加密的特定密碼算法W及對應(yīng)于密碼算法的任何參數(shù)。
[0074] 在一些實例中,散列運算與加密處置器306還插入公鑰證書,所述公鑰證書曾用于 將經(jīng)加密及/或經(jīng)散列運算鍵-值對320加密及/或可用于確認(rèn)經(jīng)加密及/或經(jīng)散列運算鍵- 值對320中的簽名數(shù)據(jù)。
[0075] 圖3的實例的實例性散列運算與加密處置器306將散列運算的指示及/或加密的指 示插入于經(jīng)加密及/或經(jīng)散列運算鍵-值對320的對應(yīng)關(guān)鍵字中。舉例來說,針對其值經(jīng)散列 運算的關(guān)鍵字,實例性散列運算與加密處置器306將' [#HHH扣'插入于關(guān)鍵字中,其中'#'是 散列識別符且是從散列運算得出的值。實例性散列運算與加密處置器306將'[sX# HHH扣'插入于經(jīng)加密及/或經(jīng)散列運算鍵-值對320的關(guān)鍵字中,其中's'是散列識別符,'X' 是在存在多個密鑰的情況下用于簽名及/或加密的密鑰的索引值,'#'是散列識別符,且 是從散列運算得出的值。
[0076] 舉例來說,W下是在散列運算與加密之前的人對象:
[0077] {
[007引"name" : "John Smith",
[0079] "email":"John.smith@example. com",
[0080] "passwords":["12345678","my-most-secret-passp虹ase", "abcdefg"]
[0081] }
[0082] 可由圖3的實例性散列運算與加密處置器306針對W上人對象產(chǎn)生的經(jīng)散列運算 及經(jīng)加密人對象為:
[0083]
[0084]
[0085] 實例性散列運算與加密處置器306將經(jīng)加密及/或經(jīng)散列運算鍵-值對320輸出到 實例性壓縮處置器308。
[0086] 所說明實例的壓縮處置器30如角定經(jīng)加密及/或經(jīng)散列運算鍵-值對320的壓縮是 否被請求。舉例來說,產(chǎn)生xJSON文件的請求可識別針對其請求壓縮的一或多個鍵-值對及/ 或?qū)ο蟆;蛘撸?dāng)鍵-值對及/或?qū)ο蟪^闊值大小時,壓縮處置器308可自動地確定壓縮被 期望。當(dāng)壓縮被請求時,壓縮處置器308壓縮(例如,zip)經(jīng)加密及/或經(jīng)散列運算鍵-值對 320(例如,所請求鍵-值對及/或所請求對象產(chǎn)生實例性經(jīng)壓縮鍵-值對322。所說明實例 的實例性壓縮處置器308將用于經(jīng)壓縮數(shù)據(jù)的關(guān)鍵字插入于實例性經(jīng)壓縮鍵-值對322中。 舉例來說,壓縮處置器308可插入用于經(jīng)壓縮數(shù)據(jù)的所產(chǎn)生關(guān)鍵字(例如,例如_oX的關(guān)鍵 字,其中X是針對插入于所產(chǎn)生xJSON文件中的每一組所產(chǎn)生數(shù)據(jù)遞增的數(shù))W確保用于每 一組所產(chǎn)生數(shù)據(jù)的關(guān)鍵字是唯一的。圖3的實例性壓縮處置器308還將壓縮識別符(例如, [Z])插入于實例性經(jīng)壓縮鍵-值對308中W向?qū)嵗越馕銎?04指示經(jīng)壓縮鍵-值對308被壓 縮。在所說明實例中,實例性壓縮處置器308插入識別用于壓縮的元數(shù)據(jù)的關(guān)鍵字的值且包 含經(jīng)壓縮數(shù)據(jù)。舉例來說,壓縮處置器308可使用gzip來壓縮經(jīng)加密及/或經(jīng)散列運算鍵-值 對320且可插入識別算法的元數(shù)據(jù)及用于壓縮算法的查找表。舉例來說,壓縮人對象的結(jié)果 可為:
[0087]
[0088] 實例性壓縮處置器30則尋經(jīng)壓縮鍵-值對322輸出到實例性序列化處理器310。
[0089] 所說明實例的實例性序列化處理器310確定實例性經(jīng)壓縮鍵-值對322的序列化是 否被請求。舉例來說,產(chǎn)生xJSON文件的請求可識別針對其請求序列化的一或多個鍵-值對 及/或?qū)ο?。?dāng)序列化被請求時,實例性序列化處理器310將所請求經(jīng)壓縮鍵-值對(例如,所 請求鍵-值對及/或所請求對象)序列化W產(chǎn)生實例性經(jīng)序列化鍵-值對324。所說明實例的 序列化處理器310插入用于經(jīng)序列化鍵-值對324的關(guān)鍵字。舉例來說,序列化處理器310可 插入用于經(jīng)序列化鍵-值對324的所產(chǎn)生關(guān)鍵字(例如,_oX,其中X是針對所產(chǎn)生xJSON對象 符號數(shù)據(jù)314中的每一組所產(chǎn)生數(shù)據(jù)遞增的數(shù))W確保用于每一組所產(chǎn)生數(shù)據(jù)的關(guān)鍵字是 唯一的。實例性序列化處理器310還將序列化識別符(例如,[b])插入于所述關(guān)鍵字中W向 實例性解析器204指示經(jīng)序列化鍵-值對被序列化。圖3的實例性序列化處理器310插入經(jīng)序 列化數(shù)據(jù)作為用于經(jīng)序列化鍵-值對324的關(guān)鍵字的值。在所說明實例中,實例性序列化處 理器310使用Base64轉(zhuǎn)換將由序列化得出的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCn文本。舉例來說,將人 對象序列化的結(jié)果可為:
[0090]
[0091] 所說明實例的實例性序列化處理器310將所得經(jīng)序列化鍵-值對324發(fā)射到實例性 數(shù)據(jù)處置器302W供發(fā)射到對象符號數(shù)據(jù)314的目的地(例如,經(jīng)由實例性接口202及實例性 網(wǎng)絡(luò)104發(fā)射到實例性web服務(wù)器102)。舉例來說,對象符號數(shù)據(jù)314ile可經(jīng)由實例性接口 202發(fā)射到實例性web服務(wù)102W供由實施于實例性web服務(wù)102中的xJSON處置器110中的實 例性解析器204進(jìn)行解析。實例性web服務(wù)102可接著根據(jù)實例性web服務(wù)102的操作處理數(shù) 據(jù)對象。或者,可將對象符號數(shù)據(jù)314發(fā)射到任何其它所要位置。在一些實例中,數(shù)據(jù)處置器 302包含引用W調(diào)用對象符號數(shù)據(jù)314中的功能。舉例來說,引用為吁uncl(argl,...a巧ΝΓ 的功能將致使解析器(例如,實例性解析器204)在解析對象符號數(shù)據(jù)時調(diào)用識別為"funcl" 的功能?;蛘撸脼?@uri壯uncl(argl,...argN)"的功能將致使解析器(例如,實例性解 析器204)致使由在位置"uri"處監(jiān)聽的服務(wù)器調(diào)用吁unci"。
[0092] 圖4是圖2的解析器204的實例性實施方案的框圖。圖4的實例性解析器204包含數(shù) 據(jù)處置器402、字符串處理器404、解密處置器410、反序列化處理器406及解壓縮處置器408。
[0093] 圖4的實例的數(shù)據(jù)處置器402接收待處理的實例性對象符號數(shù)據(jù)412(例如,xJSON 文件)文件。實例性數(shù)據(jù)處置器402從對象符號數(shù)據(jù)412提取鍵-值對及/或?qū)ο笄覍⑵浒l(fā)射 到實例性字符串處理器404。舉例來說,數(shù)據(jù)處置器402可一次提取一個鍵-值對且將所述 鍵-值對作為實例性鍵-值對414來發(fā)射W供由實例性字符串處理器404、實例性反序列化處 理器406、實例性解壓縮處置器408及/或?qū)嵗越饷芴幹闷?10進(jìn)行處理?;蛘?,數(shù)據(jù)處置器 402可提取多個鍵-值對W供由實例性字符串處理器404、實例性反序列化處理器406及實例 性解壓縮處置器408W及實例性解密處置器410進(jìn)行處理。
[0094] 在由實例性字符串處理器404、實例性反序列化處理器406及實例性解壓縮處置器 408W及實例性解密處置器410中的一或多者進(jìn)行處理之后,實例性數(shù)據(jù)處置器402接收數(shù) 據(jù)對象(例如,實例性經(jīng)解密對420)且將含有從實例性對象符號數(shù)據(jù)412提取的對象的實例 性對象數(shù)據(jù)422發(fā)射到實例性化vaScript解釋器208。
[00M]圖4的實例性字符串處理器404接收由數(shù)據(jù)處置器402從對象符號數(shù)據(jù)412(例如, xJSON文件)提取的實例性鍵-值對414且基于字符串文字的存在或缺乏(例如,環(huán)繞關(guān)鍵字 及值的引號)而自動地確定實例性鍵-值對414是xJSON文件還是JSON文件。根據(jù)所說明實 例,當(dāng)字符串文字存在時,字符串處理器404確定實例性鍵-值對414與為JS0N文件的文件相 關(guān)聯(lián),且當(dāng)字符串文字不存在時,確定實例性鍵-值對414為xJSON文件。實例性字符串處理 器404另外在存在字符串文字(例如,引號)時移除所述字符串文字W減小數(shù)據(jù)大小。實例性 字符串處理器404將經(jīng)處理鍵-值對416發(fā)射到實例性反序列化處理器406。
[0096] 圖4的實例性反序列化處理器406確定經(jīng)處理鍵-值對416是否包含序列化識別符 (例如,已經(jīng)修改W包含已執(zhí)行序列化的指示的關(guān)鍵字,例如方括號中的字母"b")。當(dāng)實例 性反序列化處理器406確定實例性經(jīng)處理鍵-值對416中包含序列化識別符時,實例性反序 列化處理器406將實例性經(jīng)處理鍵-值對416反序列化。舉例來說,經(jīng)序列化數(shù)據(jù)可為在 Base64中編碼,且實例性序列化處理器406將解碼Base64表示W(wǎng)檢索原始鍵-值對。在執(zhí)行 任何所需反序列化之后,所說明實例的實例性反序列化處置器406將經(jīng)反序列化鍵-值對 417發(fā)射到實例性解壓縮處置器408。
[0097] 實例性解壓縮處置器40如角定實例性經(jīng)反序列化鍵-值對417是否包含壓縮識別符 (例如,已經(jīng)修改W包含已執(zhí)行壓縮的指示的關(guān)鍵字,例如方括號中的字母"Z")。當(dāng)此實例 的實例性解壓縮處置器40如角定實例性經(jīng)反序列化鍵-值對417的關(guān)鍵字中包含壓縮識別符 時,實例性解壓縮處置器40則尋實例性經(jīng)反序列化鍵-值對417解壓縮。所說明實例的實例性 解壓縮處置器408從在由實例性壓縮處置器308進(jìn)行的壓縮期間插入到實例性經(jīng)反序列化 鍵-值對417的值中的元數(shù)據(jù)檢索壓縮算法的標(biāo)識。舉例來說,元數(shù)據(jù)可包含壓縮算法(例 如,gzip)的標(biāo)識、供在壓縮及/或解壓縮期間使用的參數(shù)(例如,查找表)。在執(zhí)行任何所需 解壓縮之后,實例性解壓縮處置器408將經(jīng)解壓縮鍵-值對418發(fā)射到實例性解密處置器 410。
[0098] 此實例的解密處置器410確定經(jīng)解壓縮鍵-值對418是否包含加密識別符(例如,已 經(jīng)修改W包含已執(zhí)行加密的指示的關(guān)鍵字,例如方括號中的字母"S")。當(dāng)所說明實例的解 密處置器410確定實例性經(jīng)解壓縮鍵-值對418的關(guān)鍵字中包含加密識別符時,解密處置器 410將所述鍵-值對解密。舉例來說,解密處置器410可存取安裝于xJSON處置器110在其上實 施的裝置(例如,實例性第一裝置106)上的私鑰。所說明實例的解密處置器410可檢索對應(yīng) 于經(jīng)解壓縮鍵-值對418的私鑰且使用所述私鑰來將經(jīng)解壓縮鍵-值對418解密?;蛘撸饷?處置器410可提示用戶輸入用于執(zhí)行解密的私鑰。
[0099] 圖4的實例性解密處置器410通過分析插入到經(jīng)解壓縮鍵-值對418及/或?qū)嵗詫?象符號數(shù)據(jù)412中的關(guān)鍵字字段而確定用于解密的適當(dāng)私鑰。或者,識別用于將經(jīng)解壓縮 鍵-值對418加密及/或解密的密鑰的信息可存儲于任何其它位置中(例如,關(guān)于用于加密的 密鑰的信息可插入于經(jīng)加密鍵-值對的關(guān)鍵字中)。在其中在實例性對象符號數(shù)據(jù)412中使 用多個密鑰的一些實例中,加密識別符可包含用于將經(jīng)解壓縮鍵-值對418加密(及類似地 用于解密)的密鑰中的特定一者的識別符。舉例來說,如上文連同散列運算與加密處置器 306-起描述,加密識別符可為1 sX#HHHH]",其中X是識別插入于對象符號數(shù)據(jù)412中的關(guān) 鍵字字段中的關(guān)鍵字中的一者的索引值。
[0100] 在執(zhí)行任何所需解密之后,所說明實例的實例性解密處置器410將實例性經(jīng)解密 鍵-值對420發(fā)射到數(shù)據(jù)處置器402W供將實例性對象數(shù)據(jù)422發(fā)射到實例性化vaScript解 釋器208。
[0101] 盡管圖3中圖解說明實施圖2的產(chǎn)生器206的實例性方式,但圖3中所圖解說明的元 件、過程及/或裝置中的一或多者可W任何其它方式組合、劃分、重新布置、省略、消除及/或 實施。此外,實例性數(shù)據(jù)處置器302、實例性字符串處理器304、實例性散列運算與加密處置 器306、實例性壓縮處置器308、實例性序列化處理器310及/或更一般來說圖2及3的產(chǎn)生器 206可由硬件、軟件、固件及/或硬件、軟件及/或固件的任何組合實施。因此,舉例來說,實例 性數(shù)據(jù)處置器302、實例性字符串處理器304、實例性散列運算與加密處置器306、實例性壓 縮處置器308及/或?qū)嵗孕蛄谢幚砥?10中的任一者可由一或多個模擬或數(shù)字電路、邏 輯電路、可編程處理器、專用集成電路(ASIC)、可編程邏輯裝置(PLD)及/或現(xiàn)場可編程邏輯 裝置(FPLD)實施。當(dāng)讀取本專利的設(shè)備或系統(tǒng)技術(shù)方案中的任一者W覆蓋純軟件及/或固 件實施方案時,實例性數(shù)據(jù)處置器302、實例性字符串處理器304、實例性散列運算與加密處 置器306、實例性壓縮處置器308及/或?qū)嵗孕蛄谢幚砥?10中的至少一者特此明確地界 定為包含有形計算機(jī)可讀存儲裝置或存儲磁盤,例如存儲器、數(shù)字多功能磁盤(DVD)、光盤 (CD)或存儲軟件及/或固件的藍(lán)光盤。此外,圖1的xJSON處置器110及/或圖2及/或3的產(chǎn)生 器206可包含除圖3中所圖解說明的那些元件、過程及/或裝置外或替代圖3中所圖解說明的 那些元件、過程及/或裝置的一或多個元件、過程及/或裝置,及/或可包含所說明的元件、過 程及裝置中的任一者或全部中的一者W上。
[0102] 圖5至化中展示表示用于實施實例性產(chǎn)生器206的實例性機(jī)器可讀指令的流程圖。 在運些實例中,所述機(jī)器可讀指令包含用于由處理器(例如展示于下文結(jié)合圖12論述的實 例性處理器平臺1200中的處理器1212)執(zhí)行的程序。所述程序可體現(xiàn)于存儲于有形計算機(jī) 可讀存儲媒體(例如CD-ROM、軟盤、硬驅(qū)動器、數(shù)字多功能磁盤(DVD)、藍(lán)光盤或與處理器 1212相關(guān)聯(lián)的存儲器)上的軟件中,但整個程序及/或其部分可替代地由除處理器1212外的 裝置執(zhí)行及/或體現(xiàn)于固件或?qū)S糜布?。此外,雖然參考圖5至化中所圖解說明的流程圖描 述實例性程序,但可替代地使用實施實例性產(chǎn)生器206的許多其它方法。舉例來說,可改變 框的執(zhí)行次序,及/或可改變、消除或組合所描述的框中的一些框。
[0103] 如上文所提及,圖5至化的實例性過程可使用存儲于有形計算機(jī)可讀存儲媒體上的 經(jīng)編碼指令(例如,計算機(jī)及/或機(jī)器可讀指令)來實施,所述有形計算機(jī)可讀存儲媒體為例 如硬盤驅(qū)動器、快閃存儲器、只讀存儲器(ROM)、光盤(CD)、數(shù)字多功能磁盤(DVD)、高速緩沖 存儲器、隨機(jī)存取存儲器(RAM)及/或其中存儲信息達(dá)任何持續(xù)時間(例如,達(dá)長時間周期、 永久地、達(dá)短暫時刻、進(jìn)行暫時緩沖及/或進(jìn)行信息的高速緩存)的任何其它存儲裝置或存 儲磁盤。如本文中所使用,術(shù)語有形計算機(jī)可讀存儲媒體明確地界定為包含任何類型的計 算機(jī)可讀存儲裝置及/或存儲磁盤且排除傳播信號及發(fā)射媒體。如本文中所使用,"有形計 算機(jī)可讀存儲媒體"與"有形機(jī)器可讀存儲媒體"可互換地使用。另外或替代地,圖5至化的實 例性過程可使用存儲于非暫時性計算機(jī)及/或機(jī)器可讀媒體上的經(jīng)編碼指令(例如,計算機(jī) 及/或機(jī)器可讀指令)來實施,所述非暫時性計算機(jī)及/或機(jī)器可讀媒體為例如硬盤驅(qū)動器、 快閃存儲器、只讀存儲器、光盤、數(shù)字多功能磁盤、高速緩沖存儲器、隨機(jī)存取存儲器及/或 其中存儲信息達(dá)任何持續(xù)時間(例如,達(dá)擴(kuò)展時間周期、永久地、達(dá)短暫時刻、進(jìn)行暫時緩沖 及/或進(jìn)行信息的高速緩存)的任何其它存儲裝置或存儲磁盤。如本文中所使用,術(shù)語非暫 時性計算機(jī)可讀媒體明確地界定為包含任何類型的計算機(jī)可讀存儲裝置及/或存儲磁盤且 排除傳播信號及發(fā)射媒體。
[0104] 圖5的實例性計算機(jī)可讀指令在實例性數(shù)據(jù)處置器302接收到數(shù)據(jù)及產(chǎn)生對象符 號數(shù)據(jù)(例如,xJSON文件)的請求時開始(框502)。舉例來說,實例性數(shù)據(jù)處置器302可從實 例性化vaScript解釋器208接收化vaScript對象。實例性數(shù)據(jù)處置器302確定xJSON輸出是 否被請求(框504)。舉例來說,產(chǎn)生xJSON文件的請求可包含xJSO卿寺定文件被請求的指示。 xJSO卿寺定文件是不需要支持由不支持xJSON的裝置進(jìn)行的解析的文件。舉例來說,針對支 持由JS0N進(jìn)行的解析的文件,關(guān)鍵字及值由引號環(huán)繞,且針對不需要支持JS0N的xJSON文 件,關(guān)鍵字及值不需要由引號環(huán)繞W減小文件大小。當(dāng)請求指示輸出文件將為xJSON文件類 型時,實例性數(shù)據(jù)處置器302插入指示文件為xJSON文件類型的內(nèi)容類型識別符(例如, 乂ontent-Type :application/xjson")(框506)。當(dāng)請求指示輸出文件將為JS0N文件類型 時,實例性數(shù)據(jù)處置器302插入指示文件為JS0N文件類型的內(nèi)容類型識別符(例如, "Content-Type:application/json")(框508)。
[0105] 在于框506或框508中設(shè)定內(nèi)容類型之后,實例性數(shù)據(jù)處置器302選擇數(shù)據(jù)對象(例 如,選擇第一數(shù)據(jù)對象、數(shù)據(jù)對象的第一元素、下一數(shù)據(jù)對象)(框510)。舉例來說,實例性數(shù) 據(jù)處置器302可選擇上文所描述的實例性人對象的firstName元素。實例性數(shù)據(jù)處置器302 接著針對所選擇元素產(chǎn)生鍵-值對(框512)。舉例來說,實例性數(shù)據(jù)處置器302可創(chuàng)建命名為 吁irstName"的關(guān)鍵字及含有first化me元素的值的值W產(chǎn)生JS0N鍵-值對:吁irstName: John"。
[0106] 實例性字符串處理器304接著確定文件的內(nèi)容類型是否被設(shè)定為xJSON(框514)。 如果內(nèi)容類型未被設(shè)定為xJSON(例如,輸出文件將支持由不支持xJSON的JS0N解析器進(jìn)行 的解析),那么實例性字符串處理器304圍繞所產(chǎn)生鍵-值對中的關(guān)鍵字及值插入引號(框 516)。
[0107] 在字符串處理器304于框516中插入引號之后或在字符串處理器304確定文件的內(nèi) 容類型被設(shè)定為xJSON(框514)之后,實例性散列運算與加密處置器306確定鍵-值對是否欲 被進(jìn)行散列運算及/或加密(框518)。當(dāng)產(chǎn)生xJSON文件的請求指示鍵-值對欲被進(jìn)行散列運 算及/或加密時,實例性散列運算與加密處置器306可確定鍵-值對欲被進(jìn)行散列運算及/或 加密?;蛘?,當(dāng)檢測到鍵-值對含有敏感數(shù)據(jù)時(例如,當(dāng)鍵-值對為口令字段時),散列運算 與加密處置器306可自動地確定數(shù)據(jù)欲被加密。當(dāng)散列運算與加密處置器306確定鍵-值對 欲被進(jìn)行散列運算及/或加密時,實例性散列運算與加密處置器306對鍵-值值對進(jìn)行散列 運算及/或加密(框520)。結(jié)合圖8描述用于對鍵-值對進(jìn)行散列運算及/或加密的實例性計 算機(jī)可讀指令。
[0108] 在實例性散列運算與加密處置器306確定散列運算與加密未被請求(框518)或散 列運算與加密處置器對鍵-值對進(jìn)行散列運算及/或加密(框520)之后,實例性壓縮處置器 30如角定鍵-值對是否欲被壓縮(框522)。當(dāng)產(chǎn)生對象符號數(shù)據(jù)的請求指示鍵-值對欲被壓縮 時,壓縮處置器308可確定鍵-值對欲被壓縮。或者,當(dāng)值的大小超過闊值水平時,實例性壓 縮處置器308可確定鍵-值對欲被壓縮。當(dāng)壓縮處置器30如角定鍵-值對欲被壓縮時,實例性 壓縮處置器308壓縮鍵-值值對(框524)。結(jié)合圖6描述用于壓縮鍵-值對的實例性計算機(jī)可 讀指令。
[0109] 在實例性壓縮處置器30如角定壓縮未被請求(框522)或壓縮處置器308壓縮鍵-值 對(框524)之后,實例性序列化處理器310確定鍵-值對是否欲被序列化(框526)。當(dāng)產(chǎn)生對 象符號數(shù)據(jù)的請求指示鍵-值對欲被序列化時,實例性序列化處理器310可確定鍵-值對欲 被序列化。當(dāng)序列化處理器310確定鍵-值對欲被序列化時,實例性序列化處理器310將鍵- 值值對序列化(框528)。結(jié)合圖7描述用于將鍵-值對序列化的實例性過程。
[0110] 在執(zhí)行任何所請求散列運算及/或加密(框520)、壓縮(框522)及序列化(框528)之 后,實例性數(shù)據(jù)處置器302將所產(chǎn)生鍵-值對插入于對象符號數(shù)據(jù)(例如,xJSON文件)中(框 530)。實例性數(shù)據(jù)處置器302確定是否存在欲針對其產(chǎn)生鍵-值對的額外數(shù)據(jù)對象及/或元 素(框532)。當(dāng)針對鍵-值對產(chǎn)生存在額外對象及/或元素時,控制返回到框510W處理下一 對象及/或元素。當(dāng)針對鍵-值對產(chǎn)生不存在額外對象及/或元素時,圖5的實例性計算機(jī)可 讀指令結(jié)束。
[0111] 圖6是用W壓縮鍵-值對的實例性計算機(jī)可讀指令的流程圖。圖6的實例性計算機(jī) 可讀指令可用于實施圖5的框524。當(dāng)實例性壓縮處置器30如角定壓縮算法時,圖6的實例性 計算機(jī)可讀指令開始(框602)。舉例來說,壓縮鍵-值對的請求可規(guī)定欲使用的壓縮算法。或 者,實例性壓縮處置器308可包含默認(rèn)壓縮算法(例如,gzip壓縮算法)。實例性壓縮處置器 308接著使用所確定壓縮算法壓縮鍵-值對(框604)。實例性壓縮處置器308接著將壓縮識別 符插入于鍵-值對的關(guān)鍵字中(框606)。舉例來說,壓縮識別符可為可指示鍵-值對被壓縮的 任何指示(例如,?ζΤ')。舉例來說,經(jīng)壓縮鍵-值對可包含關(guān)鍵字占位符及壓縮識別符(例 如,"_〇1[ζΓ,其中"0"后的值是針對每一經(jīng)壓縮值遞增W確保每一關(guān)鍵字保持唯一的索 引)。實例性壓縮處置器308接著將關(guān)于壓縮的元數(shù)據(jù)插入于鍵-值對的值中(框608)。舉例 來說,壓縮處置器308可插入用于壓縮的算法的標(biāo)識(例如,"alg:gzip")及用于壓縮的參數(shù) (例如,查找表"1山:+srR6'0s")。圖6的實例性計算機(jī)可讀指令接著結(jié)束。舉例來說,控制可 返回到圖5的框526。
[0112] 圖7是可經(jīng)執(zhí)行W將鍵-值對序列化的實例性計算機(jī)可讀指令的流程圖。圖7的實 例性計算機(jī)可讀指令可用于實施圖5的框528。當(dāng)實例性序列化處理器310確定用于鍵-值對 中的值的經(jīng)序列化值時,圖7的實例性計算機(jī)可讀指令開始(框702)。舉例來說,序列化處理 器310可將鍵-值對的值序列化且執(zhí)行二進(jìn)制到文本轉(zhuǎn)換(例如,使用Base64)W將經(jīng)序列化 數(shù)據(jù)存儲于對象符號數(shù)據(jù)中。實例性序列化處理器310接著修改鍵-值對的關(guān)鍵字W將序列 化識別符插入于所述關(guān)鍵字中(例如,實例性序列化處理器310可將"[b]"插入于所述關(guān)鍵 字中)。圖7的實例性計算機(jī)可讀指令接著結(jié)束。舉例來說,控制可返回到圖5的框530。
[0113] 圖8是用于對鍵-值對進(jìn)行散列運算及/或加密的實例性計算機(jī)可讀指令的流程 圖。圖8的實例性計算機(jī)可讀指令可用于實施圖5的框520。當(dāng)所說明實例的實例性散列運算 與加密處置器310確定欲使用的密碼及密鑰時,圖8的過程開始(框802)。舉例來說,進(jìn)行散 列運算及/或加密的請求可包含欲使用的密碼及/或密鑰(例如,私鑰)的標(biāo)識。或者,散列運 算與加密處置器310可使用默認(rèn)密碼及/或私鑰。實例性散列運算與加密處置器310接著將 欲加密的字符串封包(框804)。舉例來說,實例性散列運算與加密處置器310通過移除任何 引號而將鍵-值對封包。散列運算與加密處置器310可執(zhí)行任何其它封包W移除任何其它字 符。實例性散列運算與加密處置器310接著使用經(jīng)識別關(guān)鍵字對鍵-值對進(jìn)行簽名(框806)。
[0114] 實例性散列運算與加密處置器310接著確定密碼是否包含加密(框808)。舉例來 說,密碼可為僅包含散列運算的密碼或可為包含散列運算與加密的密碼。當(dāng)密碼不包含加 密時,控制進(jìn)行到框822W用于對鍵-值對進(jìn)行散列運算。當(dāng)密碼包含加密時,散列運算與加 密處置器310將經(jīng)簽名鍵-值對加密(框810)。實例性散列運算與加密處置器310接著將經(jīng)加 密值轉(zhuǎn)換為字符串W用于插入于xJSON文件中(框812)。實例性散列運算與加密處置器310 使用Base64編碼將經(jīng)加密值轉(zhuǎn)移到字符串。
[0115] 在將鍵-值對加密(框810)之后,散列運算與加密處置器310將加密識別符(例如, Is]")插入于鍵-值對的關(guān)鍵字中(框814)。實例性散列運算與加密處置器310接著將識別 密碼的元數(shù)據(jù)插入于xJSON文件中(框816)。舉例來說,可W關(guān)鍵字名稱"關(guān)鍵字"將密碼元 數(shù)據(jù)插入于鍵-值對中。實例性散列運算與加密處置器310接著確定關(guān)鍵字元數(shù)據(jù)中是否存 在多個密碼(框818)。如果關(guān)鍵字元數(shù)據(jù)中存在多個密碼,那么實例性散列運算與加密處置 器310將密碼識別符插入于經(jīng)加密鍵-值對的關(guān)鍵字中(框820)。舉例來說,散列運算與加密 處置器310可插入對應(yīng)于關(guān)鍵字元數(shù)據(jù)中的密碼的索引(例如,"k2]",其中密碼是關(guān)鍵字 元數(shù)據(jù)中的第二密碼)。
[0116] 在散列運算與加密處置器310已確定密碼不包含加密(框808),已確定不存在多個 密碼(框818)或已將密碼的識別符插入于關(guān)鍵字中(框820)之后,實例性散列運算與加密處 置器310確定鍵-值對的值的散列(框822)。舉例來說,可使用雙重皮爾遜散列運算(double Pearson hashing)來確定散列。實例性散列運算與加密處置器310將散列的值插入到鍵-值 對的關(guān)鍵字中(框824)。舉例來說,可將散列值插入于散列運算識別符后面(例如,散列運算 識別符可為散列符號(#))。舉例來說,散列可被插入為Γ[#ΧΧΧΧΓ,其中XXXX是散列值)。經(jīng) 加密且經(jīng)散列運算的值的關(guān)鍵字可為ls#xxxxr (其中存在單個密碼)及l(fā)si#xxxxr (其 中存在多個密碼且第一密碼用于加密)。
[0117] 圖8的實例性計算機(jī)可讀指令接著結(jié)束。舉例來說,控制可返回到圖5的框522。
[0118] 盡管圖4中圖解說明實施圖2的解析器204的實例性方式,但圖4中所圖解說明的元 件、過程及/或裝置中的一或多者可W任何其它方式組合、劃分、重新布置、省略、消除及/或 實施。此外,實例性數(shù)據(jù)處置器402、實例性字符串處理器404、實例性反序列化處理器406、 實例性解壓縮處置器408、實例性解密處置器410及/或更一般來說圖2及4的解析器204可由 硬件、軟件、固件及/或硬件、軟件及/或固件的任何組合實施。因此,舉例來說,實例性數(shù)據(jù) 處置器402、實例性字符串處理器404、實例性反序列化處理器406、實例性解壓縮處置器408 及/或?qū)嵗越饷芴幹闷?10中的任一者可由一或多個模擬或數(shù)字電路、邏輯電路、可編程 處理器、專用集成電路(ASIC)、可編程邏輯裝置(PLD)及/或現(xiàn)場可編程邏輯裝置(FPLD)實 施。當(dāng)讀取本專利的設(shè)備或系統(tǒng)技術(shù)方案中的任一者W覆蓋純軟件及/或固件實施方案時, 實例性數(shù)據(jù)處置器402、實例性字符串處理器404、實例性反序列化處理器406、實例性解壓 縮處置器408及/或?qū)嵗越饷芴幹闷?10中的至少一者特此明確地界定為包含有形計算機(jī) 可讀存儲裝置或存儲磁盤,例如存儲器、數(shù)字多功能磁盤(DVD)、光盤(CD)或存儲軟件及/或 固件的藍(lán)光盤。此外,圖1的xJSON處置器110及/或圖2及/或4的解析器204可包含除圖4中所 圖解說明的那些元件、過程及/或裝置外或替代圖4中所圖解說明的那些元件、過程及/或裝 置的一或多個元件、過程及/或裝置,及/或可包含所說明的元件、過程及裝置中的任一者或 全部中的一者W上。
[0119] 圖9到11中展示表示用于實施實例性解析器204的實例性機(jī)器可讀指令的流程圖。 在運些實例中,所述機(jī)器可讀指令包含用于由處理器(例如展示于下文結(jié)合圖12論述的實 例性處理器平臺1200中的處理器1212)執(zhí)行的程序。所述程序可體現(xiàn)于存儲于有形計算機(jī) 可讀存儲媒體(例如CD-ROM、軟盤、硬驅(qū)動器、數(shù)字多功能磁盤(DVD)、藍(lán)光盤或與處理器 1212相關(guān)聯(lián)的存儲器)上的軟件中,但整個程序及/或其部分可替代地由除處理器1212外的 裝置執(zhí)行及/或體現(xiàn)于固件或?qū)S糜布?。此外,雖然參考圖9到11中所圖解說明的流程圖 描述實例性程序,但可替代地使用實施實例性解析器204的許多其它方法。舉例來說,可改 變框的執(zhí)行次序,及/或可改變、消除或組合所描述的框中的一些框。
[0120] 如上文所提及,圖9到11的實例性過程可使用存儲于有形計算機(jī)可讀存儲媒體上 的經(jīng)編碼指令(例如,計算機(jī)及/或機(jī)器可讀指令)來實施,所述有形計算機(jī)可讀存儲媒體為 例如硬盤驅(qū)動器、快閃存儲器、只讀存儲器(ROM)、光盤(CD)、數(shù)字多功能磁盤(DVD)、高速緩 沖存儲器、隨機(jī)存取存儲器(RAM)及/或其中存儲信息達(dá)任何持續(xù)時間(例如,達(dá)擴(kuò)展時間周 期、永久地、達(dá)短暫時刻、進(jìn)行暫時緩沖及/或進(jìn)行信息的高速緩存)的任何其它存儲裝置或 存儲磁盤。如本文中所使用,術(shù)語有形計算機(jī)可讀存儲媒體明確地界定為包含任何類型的 計算機(jī)可讀存儲裝置及/或存儲磁盤且排除傳播信號及發(fā)射媒體。如本文中所使用,"有形 計算機(jī)可讀存儲媒體"與"有形機(jī)器可讀存儲媒體"可互換地使用。另外或替代地,圖9到11 的實例性過程可使用存儲于非暫時性計算機(jī)及/或機(jī)器可讀媒體上的經(jīng)編碼指令(例如,計 算機(jī)及/或機(jī)器可讀指令)來實施,所述非暫時性計算機(jī)及/或機(jī)器可讀媒體為例如硬盤驅(qū) 動器、快閃存儲器、只讀存儲器、光盤、數(shù)字多功能磁盤、高速緩沖存儲器、隨機(jī)存取存儲器 及/或其中存儲信息達(dá)任何持續(xù)時間(例如,達(dá)擴(kuò)展時間周期、永久地、達(dá)短暫時刻、進(jìn)行暫 時緩沖及/或進(jìn)行信息的高速緩存)的任何其它存儲裝置或存儲磁盤。如本文中所使用,術(shù) 語非暫時性計算機(jī)可讀媒體明確地界定為包含任何類型的計算機(jī)可讀存儲裝置及/或存儲 磁盤且排除傳播信號及發(fā)射媒體。
[0121] 圖9是用于實例性解析器204解析對象符號數(shù)據(jù)(例如,xJSON文件)的實例性計算 機(jī)可讀指令的流程圖。當(dāng)實例性數(shù)據(jù)處置器402接收到對象符號數(shù)據(jù)時,圖9的實例性計算 機(jī)可讀指令開始(框902)。舉例來說,數(shù)據(jù)處置器402或包含xJSON處置器110的裝置的另一 組件可向發(fā)射數(shù)據(jù)作為xJSON數(shù)據(jù)的另一裝置請求數(shù)據(jù)。
[0122] 在一些實例中,所說明實例的數(shù)據(jù)處置器402請求可用對象符號數(shù)據(jù)的僅一部分。 舉例來說,實例性xJSON文件可能包含100,000個關(guān)鍵字值對,其將耗盡嘗試解析xJSON文件 的低功率裝置(例如,及ΙοΤ裝置)的存儲器。因此,實例性數(shù)據(jù)處置器402請求所要部分(例 如,基于用于檢索數(shù)據(jù)的請求)。舉例來說,數(shù)據(jù)處置器402可使用點符號引用對象符號數(shù)據(jù) 的特定部分(例如,"@exmaple .com/myobj .xjson#id. value 1"將檢索由example. com供應(yīng)的 myobj.xjson文件中的對象id中的識別為valuel的關(guān)鍵字)。因此,實例性數(shù)據(jù)處置器402可 檢索所關(guān)注的所要關(guān)鍵字及/或?qū)ο蠖恍枰獧z索整個對象符號數(shù)據(jù)。在實例性實施方案 中,對象可引用為"#〇bject"(其中"object"是對象的名稱)、(其中"uri"是可從其檢 索對象符號數(shù)據(jù)的位置)及Ouriitobject. subobject(其中"subobject"識別"uri"處的對象 符號數(shù)據(jù)位置中的對象"object"內(nèi)的對象及/或關(guān)鍵字)。
[0123] 實例性數(shù)據(jù)處置器402選擇對象符號數(shù)據(jù)中的第一鍵-值對(框904)。實例性字符 串處理器404確定鍵-值對是否包含字符串文字(例如,引號)(框906)。當(dāng)鍵-值對不包含字 符串文字時,實例性字符串處理器404確定所接收文件是xJSON類型且存儲文件是xJSON文 件的指示(例如,因為JS0N文件包含引號但xJSON文件不需要包含引號)(框908)??刂平又?返回到框922。
[0124]當(dāng)字符串處理器404確定鍵-值對包含字符串文字時,字符串處理器404將類型存 儲為JS0N(框910)。舉例來說,文件可為JS0N兼容文件,因為其包含字符串文字,但文件可包 含xJSON擴(kuò)展。實例性字符串處理器404接著從鍵-值對移除引號W減小xJSON文件的大小 (框 912)。
[01巧]在字符串處理器404將類型設(shè)定為xJSON(框908)之后或在字符串處理器404移除 引號(框912)之后,實例性反序列化處理器406確定關(guān)鍵字是否包含序列化識別符(框914)。 當(dāng)關(guān)鍵字包含序列化識別符時,實例性反序列化處理器406將經(jīng)序列化數(shù)據(jù)反序列化/去編 組(框916)。
[0126] 當(dāng)鍵-值對不包含序列化識別符(框914)時或在將鍵-值對反序列化(框916)之后, 實例性解壓縮處置器40如角定關(guān)鍵字是否包含壓縮識別符(框918)。當(dāng)關(guān)鍵字包含壓縮識別 符時,實例性解壓縮處置器408將鍵-值對解壓縮(框920)。結(jié)合圖11描述可經(jīng)執(zhí)行^將鍵- 值對解壓縮的實例性計算機(jī)可讀指令。
[0127] 當(dāng)鍵-值對不包含壓縮識別符識別符(框918)時或在將鍵-值對解壓縮(框920)之 后,實例性解密處置器410確定鍵-值對的關(guān)鍵字是否包含加密識別符(框922)。當(dāng)關(guān)鍵字包 含加密識別符時,解密處置器410將鍵-值對解密(框924)。結(jié)合圖10描述用W將鍵-值對解 密的實例性計算機(jī)可讀指令。
[0128] 圖10是用W將經(jīng)加密鍵-值對解密的實例性計算機(jī)可讀指令的流程圖。實例性計 算機(jī)可讀指令可用于實施圖9的框924。當(dāng)解密處置器410確定在鍵-值對的加密期間所使用 的密碼及密鑰時,實例性計算機(jī)可讀指令開始(框1002)。實例性解密處置器410從對象符號 數(shù)據(jù)中所包含的關(guān)鍵字元數(shù)據(jù)確定密碼及公鑰。在一些實例中,解密處置器410使用加密處 置器中所識別的索引從密鑰列表選擇密碼及密鑰。
[0129] 實例性解密處置器410接著獲得對應(yīng)于在加密期間使用的公鑰的私鑰(框1004)。 舉例來說,私鑰可為存儲于一組私鑰中,所述組私鑰存儲于解析器204中?;蛘撸饷芴幹闷?410可顯示請求用戶提供對應(yīng)于所識別公鑰的私鑰的提示。解密處置器410接著使用私鑰及 所識別密碼將經(jīng)加密數(shù)據(jù)解密(框1006)。圖10的實例性計算機(jī)可讀指令接著結(jié)束。舉例來 說,控制可返回到圖9的框926。
[0130] 圖11是用W將鍵-值對解壓縮的實例性計算機(jī)可讀指令的流程圖。圖11的實例性 計算機(jī)可讀指令可用于實施圖9的框920。當(dāng)實例性解壓縮處置器40如角定用于壓縮鍵-值對 的壓縮算法時,圖11的實例性計算機(jī)可讀指令開始(框1102)。舉例來說,解壓縮處置器408 從插入于經(jīng)壓縮鍵-值對的值中的元數(shù)據(jù)確定壓縮算法。實例性解壓縮處置器408接著確定 用于壓縮的參數(shù)(框1104)。舉例來說,解壓縮處置器408可從插入于鍵-值對的值中的元數(shù) 據(jù)提取所述參數(shù)。舉例來說,所述參數(shù)可包含壓縮算法所使用的查找表。實例性解壓縮處置 器408接著使用所識別壓縮算法及參數(shù)將鍵-值對解密(框1106)。圖11的實例性計算機(jī)可讀 指令接著結(jié)束。舉例來說,控制可返回到圖9的框922。
[0131] 圖12是實例性處理器平臺1200的框圖,實例性處理器平臺1200經(jīng)結(jié)構(gòu)化W執(zhí)行圖 5、6、7、8、9、10及/或11的指令^實施實例性第一裝置106及/或?qū)嵗?66服務(wù)102(包含實 例性接口 202、實例性解析器204(例如,包含實例性數(shù)據(jù)處置器402、實例性字符串處理器 404、實例性反序列化處理器406、實例性解壓縮處置器408及/或?qū)嵗越饷芴幹闷?10)、實 例性產(chǎn)生器206(例如,包含實例性數(shù)據(jù)處置器302、實例性字符串處理器304、實例性散列運 算與加密處置器306、實例性壓縮處置器308及/或?qū)嵗孕蛄谢幚砥?10)及/或?qū)嵗?化vaScript解釋器210)。舉例來說,處理器平臺1200可為個人計算機(jī)、移動裝置(例如,移動 電話、智能電話、平板計算機(jī)(例如iPad?)、個人數(shù)字助理(PDA)或能夠處理圖像的任何其它 類型的計算裝置。
[0132] 所說明實例的處理器平臺1200包含處理器1212。所說明實例的處理器1212是硬 件。舉例來說,處理器1212可由來自任何所要系列或制造商的一或多個集成電路、邏輯電 路、微處理器或控制器實施。圖12的實例性處理器1212可實施包含實例性解析器204、實例 性產(chǎn)生器206及實例性化vaScript解釋器208的實例性xJSON處置器110的組件W解析及產(chǎn) 生xJSON文件及數(shù)據(jù)。
[0133] 所說明實例的處理器1212包含本地存儲器1213(例如,高速緩沖存儲器)。所說明 實例的處理器1212經(jīng)由總線1218與包含易失性存儲器1214及非易失性存儲器1216的主存 儲器通信。易失性存儲器1214可由同步動態(tài)隨機(jī)存取存儲器(SDRAM)、動態(tài)隨機(jī)存取存儲器 (DRAM)、RAMBUS動態(tài)隨機(jī)存取存儲器(RDRAM)及/或任何其它類型的隨機(jī)存取存儲器裝置實 施。非易失性存儲器1216可由快閃存儲器及/或任何其它所要類型的存儲器裝置實施。對主 存儲器1214、1216的存取由存儲器控制器控制。
[0134] 所說明實例的處理器平臺1200還包含接口電路1220。接口電路1220可由任何類型 的接口標(biāo)準(zhǔn)(例如W太網(wǎng)接口、通用串行總線化SB)及/或PCI快速接口)實施。實例性接口電 路可實施圖1及/或2的xJSON處置器110的實例性接口 202W使處理器平臺1200與圖1的實例 性網(wǎng)絡(luò)104介接。
[0135] 在所說明實例中,一或多個輸入裝置1222連接到接口電路1220。輸入裝置1222準(zhǔn) 許用戶將數(shù)據(jù)及命令輸入到處理器1212中。舉例來說,輸入裝置可由音頻傳感器、麥克風(fēng)、 攝像機(jī)(靜物攝像機(jī)或視頻攝像機(jī))、鍵盤、按鈕、鼠標(biāo)、觸摸屏、觸控板、軌跡球、相等點 (isopoint)及/或話音辨識系統(tǒng)實施。
[0136] -或多個輸出裝置1224也連接到所說明實例的接口電路1220。舉例來說,輸出裝 置1224可由顯示裝置(例如,發(fā)光二極管化抓)、有機(jī)發(fā)光二極管(0LED)、液晶顯示器、陰極 射線管顯示器(CRT)、觸摸屏、觸覺輸出裝置、發(fā)光二極管化邸)、打印機(jī)及/或揚(yáng)聲器)實施。 因此,所說明實例的接口電路1220通常包含圖形驅(qū)動器卡、圖形驅(qū)動器忍片或圖形驅(qū)動器 處理器。
[0137] 所說明實例的接口電路1220還包含通信裝置(例如發(fā)射器、接收器、收發(fā)器、調(diào)制 解調(diào)器及/或網(wǎng)絡(luò)接口卡促進(jìn)經(jīng)由網(wǎng)絡(luò)1226(例如,W太網(wǎng)連接、數(shù)字訂戶線(D化)、電話 線、同軸電纜、蜂窩式電話系統(tǒng))與外部機(jī)器(例如,任何種類的計算裝置)的數(shù)據(jù)交換。
[0138] 所說明實例的處理器平臺1200還包含用于存儲軟件及/或數(shù)據(jù)的一或多個大容量 存儲裝置1228。此類大容量存儲裝置1228的實例包含軟盤驅(qū)動器、硬驅(qū)動磁盤、光盤驅(qū)動 器、藍(lán)光盤驅(qū)動器、RAID系統(tǒng)及數(shù)字多功能磁盤(DVD)驅(qū)動器。
[0139] 圖5、6、7、8、9、10及/或11的經(jīng)編碼指令1232可存儲于大容量存儲裝置1228中、存 儲于易失性存儲器1214中、存儲于非易失性存儲器1216中及/或存儲于可裝卸有形計算機(jī) 可讀存儲媒體(例如CD或DVD)上。
[0140] 本文中所掲示實例提供對對象符號數(shù)據(jù)(例如,人類可讀對象符號數(shù)據(jù)(例如 JS0N))的擴(kuò)展。在一些實例中,通過封包及/或壓縮對象符號數(shù)據(jù)的部分而減少地使用數(shù)據(jù) 存儲裝置的使用及通信帶寬。在一些實例中,通過允許封包/壓縮、序列化及/或壓縮對象符 號數(shù)據(jù)的部分同時允許對象符號數(shù)據(jù)的其它部分不被擴(kuò)展而減少計算機(jī)處理資源使用。舉 例來說,在JSON文件中,使用本文中所掲示的實例,可將單個鍵-值對加密而不需要將整個 JSON文件加密,此減少將JSON文件的元素加密及解密所需的處理量。在一些實例中,通過產(chǎn) 生遵循由先前對象符號協(xié)議設(shè)定的語法規(guī)則的輸出(例如,擴(kuò)展JSON文件)而提供與不支持 擴(kuò)展的裝置的向后兼容性。因此,當(dāng)用不支持?jǐn)U展的裝置解析擴(kuò)展文件時,滿足先前協(xié)議的 語法規(guī)則的此類擴(kuò)展文件將不觸發(fā)錯誤。
[0141]在權(quán)利要求書的范圍內(nèi),在所描述實施例中修改是可能的,且其它實施例是可能 的。
【主權(quán)項】
1. 一種設(shè)備,其包括: 數(shù)據(jù)處置器,其具有用以接收對象數(shù)據(jù)的第一輸入及用以輸出所述對象數(shù)據(jù)的對象符 號鍵-值對的第一輸出; 字符串處理器,其具有耦合到所述第一輸出的第二輸入及用以傳達(dá)不具有字符串文字 的所述對象符號鍵-值對的第二輸出;及 散列運算與加密處置器,其具有耦合到所述第二輸出的第三輸入及第三輸出,所述第 三輸出用以傳達(dá)以私鑰簽名的所述鍵-值對、用以傳達(dá)以公鑰加密的所述鍵-值對,且用以 在所述經(jīng)加密鍵-值對的關(guān)鍵字中傳達(dá)所述經(jīng)加密鍵-值對被加密的指示。2. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第三輸出用以傳達(dá)所述經(jīng)加密鍵-值對,其中 所述經(jīng)加密鍵-值對的散列值插入于所述經(jīng)加密鍵-值對的所述關(guān)鍵字中。3. 根據(jù)權(quán)利要求2所述的設(shè)備,其中所述第三輸出用以在所述鍵-值對的所述關(guān)鍵字中 傳達(dá)所述經(jīng)加密鍵-值對被進(jìn)行散列運算的指示。4. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第三輸出用以在所述經(jīng)加密鍵-值對的所述關(guān) 鍵字中傳達(dá)識別用于將所述鍵-值對加密的加密密碼的索引值。5. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第三輸出用以將所述經(jīng)加密鍵-值對作為字符 串值來傳達(dá)。6. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第三輸出用以傳達(dá)用于將所述鍵-值對加密的 密碼的標(biāo)識。7. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第三輸出用以傳達(dá)所述公鑰的標(biāo)識。8. 根據(jù)權(quán)利要求1所述的設(shè)備,其進(jìn)一步包括壓縮處置器,所述壓縮處置器具有耦合到 所述第三輸出的第四輸入及用以傳達(dá)被壓縮的所述經(jīng)加密鍵-值對的第四輸出。9. 根據(jù)權(quán)利要求8所述的設(shè)備,其中所述第四輸出用以在所述經(jīng)壓縮鍵-值對的關(guān)鍵字 中傳達(dá)所述經(jīng)壓縮鍵-值對被壓縮的指示。10. 根據(jù)權(quán)利要求8所述的設(shè)備,其中所述第四輸出用以在所述經(jīng)壓縮鍵-值對的值中 傳達(dá)用于壓縮所述經(jīng)加密鍵-值對的壓縮算法的標(biāo)識。11. 根據(jù)權(quán)利要求1所述的設(shè)備,其進(jìn)一步包括序列化處理器,所述序列化處理器具有 耦合到所述第四輸出的第五輸入及用以傳達(dá)被序列化的所述經(jīng)壓縮鍵-值對的第五輸出。12. 根據(jù)權(quán)利要求11所述的設(shè)備,其中所述第五輸出用以在所述經(jīng)序列化鍵-值對的關(guān) 鍵字中傳達(dá)所述經(jīng)序列化鍵-值被序列化的指示。13. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述數(shù)據(jù)處置器包含用以傳達(dá)包含所述經(jīng)序列化 鍵-值對的對象符號文件的第六輸出。14. 一種設(shè)備,其包括: 數(shù)據(jù)處置器,其用以產(chǎn)生數(shù)據(jù)對象的對象符號鍵-值對;及 散列運算與加密處置器,其用以用私鑰將所述鍵-值對簽名、用公鑰將所述經(jīng)簽名鍵-值對加密及將所述鍵-值對的關(guān)鍵字中對所述鍵-值對被加密的指示插入于對象符號文件 中。15. 根據(jù)權(quán)利要求14所述的設(shè)備,其中所述散列運算與加密處置器用以確定所述經(jīng)加 密鍵-值對的散列值。16. 根據(jù)權(quán)利要求15所述的設(shè)備,其中所述散列運算與加密處置器用以將所述散列值 插入于所述關(guān)鍵字中。17. 根據(jù)權(quán)利要求16所述的設(shè)備,其中所述散列運算與加密處置器用以將所述鍵-值對 被進(jìn)行散列運算的指示插入于所述關(guān)鍵字中。18. 根據(jù)權(quán)利要求14所述的設(shè)備,其中所述散列運算與加密處置器用以:確定所述對象 符號文件包含多個加密密碼;及將識別用于將所述鍵-值對加密的加密密碼的索引值插入 于所述關(guān)鍵字中。19. 一種產(chǎn)生對象符號文件的方法,所述方法包括: 產(chǎn)生數(shù)據(jù)對象的對象符號鍵-值對; 以私鑰將所述鍵-值對簽名; 以公鑰將所述經(jīng)簽名鍵-值對加密;及 將所述鍵-值對的關(guān)鍵字中對所述鍵-值對被加密的指示插入于對象符號文件中。20. 根據(jù)權(quán)利要求19所述的方法,其進(jìn)一步包括確定所述經(jīng)加密鍵-值對的散列值。21. 根據(jù)權(quán)利要求20所述的方法,其進(jìn)一步包括將所述散列值插入于所述關(guān)鍵字中。22. 根據(jù)權(quán)利要求21所述的方法,其進(jìn)一步包括將所述鍵-值對被進(jìn)行散列運算的指示 插入于所述關(guān)鍵字中。23. 根據(jù)權(quán)利要求19所述的方法,其進(jìn)一步包括:確定所述對象符號文件包含多個加密 密碼;及將識別用于將所述鍵-值對加密的加密密碼的索引值插入于所述關(guān)鍵字中。
【文檔編號】G06F17/00GK105993010SQ201580008241
【公開日】2016年10月5日
【申請日】2015年2月11日
【發(fā)明人】亞伯拉罕·鮑姆, 利安·扎爾米, 吉爾·賴特爾
【申請人】德州儀器公司