STM32 百度云IoT物联网平台 MQTT 2路开关+2路数据. if(MQTT_CMDOutPtr != MQTT_CMDInPtr){ //if成立的话,说明命令缓冲区有数据了 MQTT_CMDOutPtr[MQTT_CMDOutPtr[0]+1] = '\0'; //加入字符串结束符 u1_printf("命令:%s\r\n",&MQTT_CMDOutPtr[1]); //串口输出信息 if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){ //判断指令,如果是CMD1
1
stm32 mqtt 通过esp8266进行通讯,该源码完全开源,已经通过测试,可以很好地使用,而且使用时不需要进行大量修改。
2021-12-17 11:06:53 12.09MB stm32 esp8266 mqtt 通讯
1
// C/C++, 利用OpenSSL库对Socket传输进行安全加密(RSA+AES) // 1. 利用RSA安全传输AES生成密钥所需的Seed(32字节) // 2. 利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密 // --- // * 理论上只需要AES就能保证全部流程,但由于AES加密所需要的AES-KEY是一个结构 // * 这个一个结构,如果通过网络进行传输,就需要对它进行网络编码,OpenSSL里面没有现成的API // * 所以就引入RSA来完成首次安全的传输,保证Seed不会被窃听 // * 同样,只使用RSA也能完成全部流程,但由于RSA的处理效率比AES低, // * 所以在业务数据传输加密上还是使用AES // --- // 下面的代码包含了上述传输加密流程所需的所有步骤(OpenSSL部分) // 在实际的Socket应用开发时,需要将这些步骤插入到Client/Server网络通信的特定阶段 // --- // 为能完成代码的编译和执行,需要先安装OpenSSL执行库及开发库 // 以Debian为例,需要安装openssl 和 libssl-dev // 编译命令: g++ -o rsa-encrypt rsa-encrypt.cpp -lcrypto // --- // 所需的OpenSSL主要的API及功能描述 // 1. RSA_generate_key() 随机生成一个RSA密钥对,供RSA加密/解密使用 // 2. i2d_RSAPublicKey() 将RSA密钥对里面的公钥提出到一个BUF,用于网络传输给对方 // 3. d2i_RSAPublicKey() 将从网络传过来的公钥信息生成一个加密使用的RSA(它里面只有公钥) // 4. RSA_public_encrypt() 使用RSA的公钥对数据进行加密 // 5. RSA_private_decrypt() 使用RSA的私钥对数据进行加密 // 6. AES_set_encrypt_key() 根据Seed生成AES密钥对中的加密密钥 // 7. AES_set_decrypt_key() 根据Seed生成AES密钥对中的解密密钥 // 8. AES_encrypt() 使用AES加密密钥对数据进行加密 // 9. AES_decrypt() 使用AES解密密钥对数据进行解密 // --- // 一个典型的安全Socket的建立流程, 其实就是如何将Server随机Seed安全发给Client // -- C: Client S:Server // C: RSA_generate_key() --> RSAKey --> i2d_RSAPublicKey(RSAKey) --> RSAPublicKey // C: Send(RSAPublicKey) TO Server // S: Recv() --> RSAPublicKey --> d2i_RSAPublicKey(RSAPublicKey) --> RSAKey // S: Rand() --> Seed --> RSA_public_encrypt(RSAKey, Seed) --> EncryptedSeed // S: Send(EncryptedSeed) TO Client // C: Recv() --> EncryptedSeed --> RSA_private_decrypt(RSAKey, EncryptedSeed) --> Seed // --- 到此, Client和Server已经完成完成传输Seed的处理 // --- 后面的流程是它们怎样使用这个Seed来进行业务数据的安全传输 // C: AES_set_encrypt_key(Seed) --> AESEncryptKey // C: AES_set_decrypt_key(Seed) --> AESDecryptKey // S: AES_set_encrypt_key(Seed) --> AESEncryptKey // S: AES_set_decrypt_key(Seed) --> AESDecryptKey // --- Client传输数据给Server // C: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Server // S: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data // --- Server传输数据给Client // S: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Client // C: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data / ========================================================================================= */
2021-12-17 10:24:19 2KB Socket OpenSSL RSA AES
1
STM32 OneNet云IoT物联网平台 MQTT 1路开关控制WiFi例程. if(MQTT_TxDataOutPtr != MQTT_TxDataInPtr){ //if成立的话,说明发送缓冲区有数据了 //3种情况可进入if //第1种:0x10 连接报文 //第2种:0x82 订阅报文,且ConnectPack_flag置位,表示连接报文成功 //第3种:SubcribePack_flag置位,说明连接和订阅均成功,其他报文可发 if((MQTT_TxDataOutPtr[1]==0x10)||((MQTT_TxDataOutPtr[1]==0x82)&&(ConnectPack_flag==1))||(SubcribePack_flag==1)){ u1_printf("发送数据:0x%x\r\n",MQTT_TxDataOutPtr[1]); //串口提示信息 MQTT_TxData(MQTT_TxDataOutPtr); //发送数据 MQTT_TxDataOutPtr += BUFF_UNIT; //指针下移 if(MQTT_TxDataOutPtr==MQTT_TxDataEndPtr) //如果指针到缓冲区尾部了 MQTT_TxDataOutPtr = MQTT_TxDataBuf[0]; //指针归位到缓冲区开头 } }//处理发送缓冲区数据的else if分支结尾
2021-12-17 10:05:14 3.49MB OneNet云 WiFi  MQTT 1路开关控制
1
STM32 OneNet云IoT物联网平台 MQTT 4路开关控制. if(MQTT_CMDOutPtr != MQTT_CMDInPtr){ //if成立的话,说明命令缓冲区有数据了 MQTT_CMDOutPtr[MQTT_CMDOutPtr[0]+1] = '\0'; //加入字符串结束符 u1_printf("命令:%s\r\n",&MQTT_CMDOutPtr[1]); //串口输出信息 if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){ //判断指令,如果是CMD1 LED1_OUT(!LED1_IN_STA); //开关1状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_State(); //判断4路开关状态,并发布给服务器 }else if(!memcmp(&MQTT_CMDOutPtr[1],CMD2,strlen(CMD2))){ //判断指令,如果是CMD2 LED2_OUT(!LED2_IN_STA); //开关2状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_State();
2021-12-17 10:05:14 3.49MB OneNet云 4路开关控制
1
STM32 OneNet云IoT物联网平台 MQTT 2路开关+2路数据. if(MQTT_CMDOutPtr != MQTT_CMDInPtr){ //if成立的话,说明命令缓冲区有数据了 MQTT_CMDOutPtr[MQTT_CMDOutPtr[0]+1] = '\0'; //加入字符串结束符 u1_printf("命令:%s\r\n",&MQTT_CMDOutPtr[1]); //串口输出信息 if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){ //判断指令,如果是CMD1 LED1_OUT(!LED1_IN_STA); //开关1状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_DATA_State(); //判断2路开关状态和采集状态,并发布给服务器 }else if(!memcmp(&MQTT_CMDOutPtr[1],CMD2,strlen(CMD2))){ //判断指令,如果是CMD2 LED2_OUT(!LED2_IN_STA); //开关2状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_DATA_State();
2021-12-17 10:05:13 3.91MB  2路开关+2路数据 MQTT
1
STM32 阿里云IoT物联网平台 MQTT 4路开关控制. if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){ //判断指令,如果是CMD1 LED1_OUT(!LED1_IN_STA); //开关1状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_State(); //判断4路开关状态,并发布给服务器
2021-12-17 10:05:13 3.57MB 阿里云  MQTT 4路开关控制
1
STM32 阿里云IoT物联网平台 MQTT 2路开关+2路数据 if(!memcmp(&MQTT_CMDOutPtr[1],CMD1,strlen(CMD1))){ //判断指令,如果是CMD1 LED1_OUT(!LED1_IN_STA); //开关1状态翻转 如果点亮就熄灭,反之如果熄灭就点亮 LED_DATA_State(); //判断2路开关状态和采集状态,并发布给服务器
2021-12-17 10:05:12 3.98MB 2路开关+2路数据
1
STM32 腾讯云IoT物联网平台 MQTT 2路开关+2路数据WiFi. if(MQTT_CMDOutPtr != MQTT_CMDInPtr){ //if成立的话,说明命令缓冲区有数据了 MQTT_CMDOutPtr[MQTT_CMDOutPtr[0]+1] = '\0'; //加入字符串结束符 u1_printf("命令:%s\r\n",&MQTT_CMDOutPtr[1]); //串口输出信息
2021-12-17 10:05:12 3.98MB 腾讯云IoT 2路开关+2路数据WiFi.
1
ssl-kill-switch2:黑盒工具可在iOS和OS X Apps中禁用SSL证书验证-包括证书固定
2021-12-16 23:21:14 572KB macos ssl security ios
1