PubNub 消息加密

Posted

技术标签:

【中文标题】PubNub 消息加密【英文标题】:PubNub Message Ecryption 【发布时间】:2021-12-26 06:39:24 【问题描述】:

公平的警告,我不是程序员,我做这更多是出于爱好。感谢您抽出宝贵时间审阅此内容并提供建议。

我在 python 中有一个列表:[60.0, 0.0, 0.0, 0.0, 347.0, 30.0, 29.0, 1.0] 并且想通过加密发布到 pubnub。我已经设法在不加密的情况下发布。

作品:

    msg = "freq" : modbusRead[0],
           "voltage" : modbusRead[1],
           "rpm" : modbusRead[2]
           

    readSecret = pubnub.publish().channel(CHANNEL).message(msg).pn_async(publish_callback)

不起作用:

     msg = "freq" : modbusRead[0],
           "voltage" : modbusRead[1],
           "rpm" : modbusRead[2]
           

    secretMsg = pubnub.encrypt("RandomCipherKey", msg)

    readSecret = pubnub.publish().channel(CHANNEL).message(secretMsg).pn_async(publish_callback)

我收到以下错误:

TypeError:+ 的不支持的操作数类型:“dict”和“bytes”

【问题讨论】:

嘿 Rjindner,我来自 PubNub。这看起来不像 PN 错误,但只是搜索了您的错误:"TypeError: unsupported operand type(s) for +: 'dict' and 'bytes" 并且有 an SO thread on this。希望这对你有用。如果没有,请告诉我。 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。 【参考方案1】:

您似乎尝试将 dict 传递给方法,该方法预期它是 bytes。 方法签名解释here,用法示例如下所示:

payload_to_encrypt = b'knights_who_say_ni'
encrypted_payload = pubnub.encrypt("test_cipher_key", payload_to_encrypt)

另外,如果没有计划从 Python 客户端发送推送通知,可以配置所有发送/接收的数据都将使用相同的令牌加密/解密(在这种情况下,您不必处理数据encrypt 方法的序列化)。 在PNConfiguration 对象中检查cipher_key

【讨论】:

谢谢,效果很好。我最终加密了整个消息。

以上是关于PubNub 消息加密的主要内容,如果未能解决你的问题,请参考以下文章

按消息文本的 Pubnub 搜索频道

如何在pubnub中顺序发布消息?

如何在 Flutter 中消费 PubNub 聊天消息?

多次调用 Pubnub 消息和存在处理程序

Angular 10 + PubNub - 从特定频道读取消息时出现问题

从 PubNub 获取未读消息并呈现通知