如何在PubNub块中解密PubNub消息

  • 本文关键字:PubNub 解密 消息 pubnub
  • 更新时间 :
  • 英文 :


im使用PubNub加密消息https://www.pubnub.com/docs/javascript/javascript/api-reference-sdk-v4#init通过两个客户之间的密钥,现在我开始拦截那些带有PubNub块的消息,但找不到解密它们的方法,我收到了一个长的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加密,则假设您需要结束加密,并且无法通过块将消息放在飞行中。

但是,如果您要采取的信息,请使用元参数传递信息。此元信息在消息有效负载之外,而不是加密,因此可以通过块访问。

PubNub PM团队很想听听有关您的用例的更多信息,以及为什么您想在飞行中解密此消息,以查看我们是否需要将其添加到路线图中。请向PubNub支持发送消息,并提供更多详细信息。

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

发布带有元数据的消息

消息的元数据部分永远不会加密,它用于用于过滤消息(和其他用例)的数据。如果您在INIT pubNub时使用密钥,则有效载荷的message部分将从端到端进行加密(由于我们不知道您的密钥)。但是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参数的输出将很详细,我鼓励您对其进行审核,因为它可能需要利用很多宝石,但是只需磨练meta键(request.params.meta)就会访问您在publish中提供的元数据。需要JSON.parse,因为数据将是 stringified (ESCAPED),{"cool": "beans"},这将转换回真实的Live JSON对象,{"cool": "beans"}

好吧,我自己做了。该代码很丑陋,我对重构的任何帮助开放,但它可以使用 - 它可以在PubNub函数(块)中解密消息

这是GIST -https://gist.github.com/datagreed/f0007e7b5b8dcfadd8a4444a4a5d3514b6dc

不要忘记更改getKey功能中的加密密钥。

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

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

PubNub函数加密模块文档

最新更新