簡體   English   中英

如何在pubnub塊中解密pubnub消息

[英]How to decrypt pubnub messages in pubnub blocks

我通過兩個客戶端之間的密碼使用pubnub加密的消息https://www.pubnub.com/docs/javascript/api-reference-sdk-v4#init ,現在我開始使用PubNub BLOCKS截獲這些消息,但找不到解密它們的方法,我收到一個很長的Base64字符串,並且沒有工具可以通過提供的加密模塊或提供的pubnub模塊對其解密,該塊非常簡單

 export default (request) => { console.log(request); // Log the request envelope passed when tested with a payload its shown when a real message goes through is a base64 string of an encrypted message return request.ok(); } 

使用加密的消息Paylaod發布未加密的元數據

當前,如果您使用的是AES加密,則假定您將要進行端到端加密,並且無法通過BLOCK在運行中解密消息。

但是,如果有您要操作的信息 ,則可以使用Meta Argument傳遞信息 此元信息在消息有效負載之外,並且未加密,因此可以由塊訪問。

PubNub PM團隊希望聽到更多關於您的用例的信息,以及為什么要在飛行中解密此消息以查看是否需要將其添加到路線圖中。 請發送消息給PubNub支持以獲取更多詳細信息。

這是一些示例代碼,您可以使用這些示例代碼查看帶有塊的實際元數據:

發布帶有元數據的消息

消息的元數據部分永遠不會加密,它意味着用於過濾消息(和其他用例)的數據。 如果您在初始化PubNub時使用密碼,則有效載荷的message部分將被端到端加密(由於我們不知道您的密碼,因此在PubNub中不會解密)。 但是meta部分將保持純文本格式,以便您可以基於這些鍵/值在塊中執行條件邏輯,也可以基於每個客戶端執行流過濾。

pubnub.publish(
   {
       channel : "chmeta",
       message : {"text": "hello"},
       meta: { 
           "cool": "beans"
       }
   }, 
   function(status, response) {
       console.log(status, response);
   }

);

使用PubNub塊訪問元數據

在您的代碼塊中(發布事件處理程序之前或之后),您可以按以下方式訪問meta鍵:

export default (request) => { 
    console.log(JSON.parse(request.params.meta));
    return request.ok(); 
}

整個request參數的輸出將是非常冗長的,我建議您對其進行檢查,因為它將在其中包含許多您可能想利用的gem,但只需將其放在meta鍵上( request.params.meta )將提供對您在publish提供的元數據的訪問權限。 需要JSON.parse ,因為數據將被字符串化 (轉義), {\\"cool\\": \\"beans\\"} ,這會將其轉換回真實的實時JSON對象, {"cool": "beans"}

好吧,我自己做的。 代碼很丑陋,我願意接受任何有關重構的幫助,但是它可以工作-它使您可以解密PubNub函數中的消息(塊)

這是要點-https: //gist.github.com/DataGreed/f0007e7b5b8dcfadd8a44a5d3514b6dc

不要忘記在getKey函數中更改加密密鑰。

PubNub函數(以前稱為BLOCKS)現在具有加密模塊

我相信在您問這個問題時,BLOCKS不包含加密模塊(我們將其更名為PubNub Functions)。 現在它是:

PubNub函數加密模塊文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM