我在两个客户之间通过密钥使用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();
}

答案 0 :(得分:0)
目前,如果您使用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);
}
);
在您的区块代码(发布事件处理程序之前或之后)中,您可以按如下方式访问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)
我相信当你提出这个问题时,加密模块没有包含在BLOCKS中(我们将其重新命名为PubNub Functions)。现在是: