如何解决通过 MQTT 协议使用椭圆曲线加密发送加密消息时出错?
我想通过 MQTT 协议发送加密消息。该消息是一个 JSON 数据。 ECIES 用于加密消息 this library JavaScript Elliptic curve cryptography library。
代码:
var mqtt = require('mqtt')
var eccrypto = require("eccrypto");
var Broker_URL = 'mqtt://localhost';
var client = mqtt.connect(Broker_URL);
client.on('connect',function () {
console.log("MQTT connected "+ client.connected);
})
var privateKeyB = Buffer.from('efae5b8156d785913e244c39ca5b9bee1a46875d123d2f49bbeb0a91474118cf','hex');
var publicKeyB = eccrypto.getPublic(privateKeyB);
var obj = {};
obj.msg = '[{"parent":"0","child":"1"},{"parent":"0","child":"2"}]'
obj.sig = "3045022100b3f03c83ed1f3d0bc72475550f23c0dd38277b0e2230e1fe76611577b2ca4b7e022037c77d37cc08ed897d0d1a11d09342e6abb73e641d20d5d55f367044d5489ddf";
var newdata = JSON.stringify(obj);
eccrypto.encrypt(publicKeyB,Buffer.from(newdata)).then(function(encrypted) {
console.log ("encrypted 1",encrypted);
console.log ("encrypted 2",encrypted.toString('hex'));
client.publish("BCencryptedFog",encrypted)
});
输出:
encrypted 1 {
iv: <Buffer df 9f d6 dc f5 dd 25 50 8d 38 5a 72 31 b4 cf c9>,ephemPublicKey: <Buffer 04 c5 99 15 cf eb 72 1d 06 ab 15 57 5a 0f 5c 94 b4 d1 d8 a4 4c 62 42 11 63 ab 8c 8a 38 b8 c5 ba 2d 2d 92 a8 6b 55 0a 99 42 f3 67 8d 65 89 ee c8 b0 f1 ... 15 more bytes>,ciphertext: <Buffer f6 7d 2d 1c c2 53 5f 45 eb 3a 83 5a b6 1f 49 1f 91 ed ff 06 9d e6 05 2d d9 59 99 c6 c7 2a 33 c5 5b 39 59 c1 e7 e4 38 29 42 96 ac f6 56 34 6e 7a a3 18 ... 190 more bytes>,mac: <Buffer c7 97 f2 6b a3 5b 40 1e 7f c9 dc 6e 8b b7 a8 75 77 36 2d 2f 6b 73 6b 4d 84 41 64 c7 7c 68 a3 5f>
}
encrypted 2 [object Object]
buffer.js:725
throw new ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: The "string" argument must be of type string or an instance of Buffer or ArrayBuffer. Received an instance of Object
如何通过 Mosquitto 发布 MQTT 协议发送成功的加密消息? 提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。