如何解密pubnub块中的pubnub消息

时间:2016-12-15 17:54:21

标签: pubnub

我在两个客户之间通过密钥使用pubnub加密消息https://www.pubnub.com/docs/javascript/api-reference-sdk-v4#init,现在我开始用PubNub BLOCKS拦截这些消息,但无法找到解密它们的方法,我收到一个很长的Base64字符串,没有工具可以通过提供的crypto module或提供的pubnub module解密它,该块非常简单



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();
}




3 个答案:

答案 0 :(得分:0)

使用加密邮件Paylaod发布未加密的元数据

目前,如果您使用AES加密,则假设您需要端到端加密,而无法通过BLOCK解密邮件中的邮件。

但是,如果您想要采取行动的信息,则pass the information using the Meta Argument。此元信息位于消息有效负载之外,未加密,因此可通过BLOCK访问。

PubNub PM团队希望能够更多地了解您的用例,以及为什么您希望在飞行中解密此消息,看看这是否是我们需要添加到路线图中的内容。请发送邮件至PubNub Support了解更多详情。

以下是一些示例代码,您可以使用这些代码来查看使用块的元数据:

使用元数据发布消息

您的邮件的元数据部分从未加密,它意味着您将用于过滤邮件(和其他用例)的数据。如果在初始化PubNub时使用密钥,则有效负载的message部分将从端到端加密(由于我们不知道您的密钥,因此不会在PubNub中解密)。但是meta部分将保持明文,以便您可以基于这些键/值在块中执行条件逻辑,或者基于每个客户端进行流过滤。

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

);

使用PubNub BLOCKS访问元数据

在您的区块代码(发布事件处理程序之前或之后)中,您可以按如下方式访问meta密钥:

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

整个request参数的输出会非常冗长,我鼓励您查看它,因为它可能会有很多宝石可供你利用,但只是在{{{ 1}}密钥(meta)可以访问您在request.params.meta中提供的元数据。需要publish,因为数据将字符串化(转义),JSON.parse,这会将其转换回真实的JSON对象{\"cool\": \"beans\"}

答案 1 :(得分:0)

好的,我自己做了。代码是丑陋的,我对重构有任何帮助,但它可以工作 - 它允许你解密PubNub函数(块)中的消息

这里是要点 - https://gist.github.com/DataGreed/f0007e7b5b8dcfadd8a44a5d3514b6dc

请勿忘记更改getKey功能中的加密密钥。

答案 2 :(得分:-1)

PubNub函数(以前称为BLOCKS)现在具有加密模块

我相信当你提出这个问题时,加密模块没有包含在BLOCKS中(我们将其重新命名为PubNub Functions)。现在是:

PubNub Functions Crypto Module Docs

相关问题