当前位置: 首页 > wzjs >正文

淘宝买模板注浆做网站noren wordpress

淘宝买模板注浆做网站,noren wordpress,请人做网站合同,云南建设银行官方网站MqttProtocol::SendAudio()对输入的音频数据进行加密处理&#xff0c;通过UDP发送加密后的音频数据。 源码&#xff1a; void MqttProtocol::SendAudio(const std::vector<uint8_t>& data) {// 使用互斥锁保护临界区&#xff0c;确保同一时间只有一个线程可以访问该…

MqttProtocol::SendAudio()对输入的音频数据进行加密处理,通过UDP发送加密后的音频数据。
源码:

void MqttProtocol::SendAudio(const std::vector<uint8_t>& data) {// 使用互斥锁保护临界区,确保同一时间只有一个线程可以访问该函数内的共享资源std::lock_guard<std::mutex> lock(channel_mutex_);// 检查udp_指针是否为空,如果为空则直接返回,避免后续操作出现空指针异常if (udp_ == nullptr) {return;}// 复制aes_nonce_到nonce字符串中,用于后续加密操作std::string nonce(aes_nonce_);// 将音频数据的大小(以网络字节序)存储到nonce字符串的第2个字节开始的位置*(uint16_t*)&nonce[2] = htons(data.size());// 将本地序列号(以网络字节序)存储到nonce字符串的第12个字节开始的位置,并递增本地序列号*(uint32_t*)&nonce[12] = htonl(++local_sequence_);// 创建一个字符串encrypted,用于存储加密后的数据,其大小为nonce的大小加上音频数据的大小std::string encrypted;encrypted.resize(aes_nonce_.size() + data.size());// 将nonce数据复制到encrypted字符串的开头memcpy(encrypted.data(), nonce.data(), nonce.size());// 初始化计数器偏移量size_t nc_off = 0;// 初始化一个16字节的流块,用于AES加密uint8_t stream_block[16] = {0};// 使用AES-CTR模式对音频数据进行加密if (mbedtls_aes_crypt_ctr(&aes_ctx_, data.size(), &nc_off, (uint8_t*)nonce.c_str(), stream_block,(uint8_t*)data.data(), (uint8_t*)&encrypted[nonce.size()]) != 0) {// 如果加密失败,记录错误日志并返回ESP_LOGE(TAG, "Failed to encrypt audio data");return;}// 通过UDP发送加密后的音频数据udp_->Send(encrypted);
}

以下是对 MqttProtocol::SendAudio 函数的详细解释:

函数概述

MqttProtocol::SendAudio 函数的主要功能是对输入的音频数据进行加密处理,然后通过UDP(User Datagram Protocol)发送加密后的音频数据。

代码详细解释

void MqttProtocol::SendAudio(const std::vector<uint8_t>& data) {// 使用互斥锁保护临界区,确保同一时间只有一个线程可以访问该函数内的共享资源std::lock_guard<std::mutex> lock(channel_mutex_);// 检查udp_指针是否为空,如果为空则直接返回,避免后续操作出现空指针异常if (udp_ == nullptr) {return;}// 复制aes_nonce_到nonce字符串中,用于后续加密操作std::string nonce(aes_nonce_);// 将音频数据的大小(以网络字节序)存储到nonce字符串的第2个字节开始的位置*(uint16_t*)&nonce[2] = htons(data.size());// 将本地序列号(以网络字节序)存储到nonce字符串的第12个字节开始的位置,并递增本地序列号*(uint32_t*)&nonce[12] = htonl(++local_sequence_);// 创建一个字符串encrypted,用于存储加密后的数据,其大小为nonce的大小加上音频数据的大小std::string encrypted;encrypted.resize(aes_nonce_.size() + data.size());// 将nonce数据复制到encrypted字符串的开头memcpy(encrypted.data(), nonce.data(), nonce.size());// 初始化计数器偏移量size_t nc_off = 0;// 初始化一个16字节的流块,用于AES加密uint8_t stream_block[16] = {0};// 使用AES-CTR模式对音频数据进行加密if (mbedtls_aes_crypt_ctr(&aes_ctx_, data.size(), &nc_off, (uint8_t*)nonce.c_str(), stream_block,(uint8_t*)data.data(), (uint8_t*)&encrypted[nonce.size()]) != 0) {// 如果加密失败,记录错误日志并返回ESP_LOGE(TAG, "Failed to encrypt audio data");return;}// 通过UDP发送加密后的音频数据udp_->Send(encrypted);
}

各部分详细解释

  1. 互斥锁保护

    std::lock_guard<std::mutex> lock(channel_mutex_);
    

    使用 std::lock_guard 来自动管理 channel_mutex_ 互斥锁,确保同一时间只有一个线程可以访问该函数内的共享资源,避免数据竞争。

  2. 空指针检查

    if (udp_ == nullptr) {return;
    }
    

    检查 udp_ 指针是否为空,如果为空则直接返回,避免后续操作出现空指针异常。

  3. 准备加密参数

    std::string nonce(aes_nonce_);
    *(uint16_t*)&nonce[2] = htons(data.size());
    *(uint32_t*)&nonce[12] = htonl(++local_sequence_);
    
    • 复制 aes_nonce_nonce 字符串中。
    • 将音频数据的大小(以网络字节序)存储到 nonce 字符串的第2个字节开始的位置。
    • 将本地序列号(以网络字节序)存储到 nonce 字符串的第12个字节开始的位置,并递增本地序列号。
  4. 初始化加密结果字符串

    std::string encrypted;
    encrypted.resize(aes_nonce_.size() + data.size());
    memcpy(encrypted.data(), nonce.data(), nonce.size());
    
    • 创建一个字符串 encrypted,用于存储加密后的数据,其大小为 nonce 的大小加上音频数据的大小。
    • nonce 数据复制到 encrypted 字符串的开头。
  5. AES-CTR加密

    size_t nc_off = 0;
    uint8_t stream_block[16] = {0};
    if (mbedtls_aes_crypt_ctr(&aes_ctx_, data.size(), &nc_off, (uint8_t*)nonce.c_str(), stream_block,(uint8_t*)data.data(), (uint8_t*)&encrypted[nonce.size()]) != 0) {ESP_LOGE(TAG, "Failed to encrypt audio data");return;
    }
    
    • 初始化计数器偏移量 nc_off 和流块 stream_block
    • 使用 mbedtls_aes_crypt_ctr 函数对音频数据进行加密,将加密结果存储在 encrypted 字符串中。
    • 如果加密失败,记录错误日志并返回。
  6. 发送加密后的数据

    udp_->Send(encrypted);
    

    通过UDP发送加密后的音频数据。

http://www.dtcms.com/wzjs/822273.html

相关文章:

  • 现在宁波做网站网站seo排名优化价格
  • 文山文山市网站建设网站建设应列入啥费用
  • 小型企业网站模板下载本地网站建设多少钱
  • 梅林 建站 wordpress联邦快递的网站建设
  • 网站的英文版怎么做的设计师素材
  • 做网站需要一些什么东西服装设计手绘
  • 珠海网站制作推广南京外贸网站建设系统
  • 简洁的企业网站源码wordpress 编辑器 白色
  • logo图标素材网站crm系统登录
  • 重庆做蔬菜配送的网站有哪些php mysql网站开发全程实例
  • 单页产品网站源码带后台微信小程序 网站建设
  • 有做h的小说网站哈尔滨中国建设银行网站首页
  • 包装设计网站欣赏网页优化怎么做
  • 快速做网站的方法网站建设百度认证图片
  • 网站加友情链接的好处网站建设在作用是什么
  • 云南省建设培训网站名站在线
  • 愚人网站建设精准的搜索引擎优化
  • 滑县做网站公司营销软件推广
  • 加强网站技术建设免费建站的平台
  • 手机怎么进入国外网站门户网站建设自查
  • 网站开发兼容极速字体颜色推荐泉州关键词优化
  • 网站是做响应式还是自适应的好沈阳百度seo代理
  • 做网站如何导入信用卡付款网站设计工作流程
  • 网站建设成都2023国际别墅设计展
  • 没有网站想做个链接页面怎么做摄影网页设计案例
  • 营销网站建设推广敏感网站用什么浏览器
  • 网站app免费生成软件网站建设2种账号体系
  • 网站页面做成自适应优缺点广州网站优化效果
  • 网站 建设 欢迎你发广告平台有哪些免费
  • 电子商务网站建设的开发方案网站开发app定制