[英]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(); }
當前,如果您使用的是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);
}
);
在您的代碼塊中(發布事件處理程序之前或之后),您可以按以下方式訪問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
函數中更改加密密鑰。
我相信在您問這個問題時,BLOCKS不包含加密模塊(我們將其更名為PubNub Functions)。 現在它是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.