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函数加密模块文档