【问题标题】:PubNub Message EcryptionPubNub 消息加密
【发布时间】: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”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。

标签: python list pubnub


【解决方案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

【讨论】:

  • 谢谢,效果很好。我最终加密了整个消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多