首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Esp8266 进阶之路33【安全篇】细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。(附带Demo)

  • 23-11-14 06:02
  • 4265
  • 7645
blog.csdn.net

  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 Esp8266之 搭建开发环境,开始一个“hellow world”串口打印。
2、 Esp8266之 利用GPIO开始使用按钮点亮你的“第一盏灯”。
3、 Esp8266之 利用 "软件定时器 " 定时0.5秒闪烁点亮一盏LED。
4 、Esp8266之 了解PWM,更为深入地用PWM控制一盏LED的亮度变化。
5 、Esp8266之 原生乐鑫SDK高级使用之封装Post与Get请求云端,拿到“天气预报信息”。
6 、Esp8266之 了解 SmartConfig与Airkiss一键配网,给8266配网上云端。无需把wifi名字密码写在固件里。
7 、Esp8266之 了解 softAP热点配网模式原理,仿“机智云”定义自己的热点配网模式协议。
8、 Esp8266之 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。
9、 Esp8266进阶之路第1篇: [小实战上篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
10、 Esp8266进阶之路第2篇: [小实战下篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
11、 Esp8266进阶之路第3篇: 8266接入阿里智能,点亮一盏LED灯,期待天猫精灵语音控制的不约而至!
12、 Esp8266进阶之路第4篇: 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏LED。
13、 Esp8266进阶之路第5篇: 动手做个8266毕设小案例,smartConfig + MQTT协议轻松实现远程控制一盏LED。
14、 Esp8266进阶之路第6篇: esp8266的 FreeRtos系统学习的正确姿势 ------ 环境搭建、烧录。
15、 Esp8266进阶之路第7篇: esp8266的 物联网又一股清流,8266接入阿里云平台非阿里智能的SDS服务,点亮一盏LED灯。
16、 Esp8266进阶之路第8篇: esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。
17、 Esp8266进阶之路第9篇: esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。
18、 Esp8266进阶之路第10篇: esp8266 基于NONOS 实现 OTA 远程升级,实现无线“ 热修复 ”升级固件程序。
19、 Esp8266进阶之路第11篇: esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。
20、 Esp8266进阶之路第12篇: 深入学习esp8266的esp now模式,仿机智云做一个小网关,实现无需网络下轻松彼此连接通讯交互数据。
21、 Esp8266进阶之路第13篇: 浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。
22、 Esp8266进阶之路第14篇: esp8266的工程如何添加第三方静态库文件以及如何自定义文件夹,聊聊那些makeFile的事。。
23、 Esp8266进阶之路第15篇: 再来一波 esp8266 基于 freeRtos系统连接自己私有的服务器实现OTA远程升级,接触下 lwip的基本知识。。
24、 Esp8266进阶之路第16篇: 渗透学习回顾下esp8266的外置spi芯片25q系列,熟悉8266代码块在其的分布,得心应手放置图片或其他资料。
25、 Esp8266进阶之路第17篇: 深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。
26、 Esp8266进阶之路第18篇: RTOS分析 MQTT 实现过程,实现移植 MQTT协议在 esp8266 rtos实时系统,可断线重连。
27、 Esp8266进阶之路第19篇: 跟紧脚步,用VisualStudio Code开发 esp8266 rtos SDK v3.0版本,全新的 idf 框架,节省内存模块化开发。
28、 Esp8266进阶之路第20篇: 教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。
29、 Esp8266进阶之路第21篇: 百万条消息免费之乐鑫esp8266使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接支持阿里云规则引擎。
30、 Esp8266进阶之路第22篇: 乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。
31、 Esp8266进阶之路第23篇: 当esp8266遇到 Html,该怎么内置网页控制设备,理清内置网页的实现过程,实现无需路由器手机也可以控制esp8266。
32、 Esp8266进阶之路第24篇: 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。
33、 Esp8266进阶之路第25篇: 如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
34、 Esp8266进阶之路第26篇: 乐鑫esp8266 NONOS SDK 3.0编程使用 SPI 驱动基于Max7219芯片的八位数码管,显示日期信息。
35、 Esp8266进阶之路第27篇: 乐鑫esp8266芯片借助机智云平台做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚。
36、 Esp8266学习rtos3.0笔记第1篇: 认识esp8266 Rtos 3.0 sdk 工程结构,esp8266如何向esp-idf工程靠近的,如何自定义头文件编译?
37、 Esp8266学习rtos3.0笔记第2篇: 你要找的基本外设功能都在这里了,包括Gpio、Pwm 和 Uart 接口使用。
38、 Esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。
39、 Esp8266学习rtos3.0笔记第4篇: 带你捋一捋市面上的微信公众号配网智能设备 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。
40、 Esp8266学习rtos3.0笔记第5篇: 基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架!支持esp8266和esp32!
41、 Esp8266学习rtos3.0笔记第6篇: esp8266-12模块基于rtos3.1版本ota功能远程空中升级固件,官网基础之上增加dns域名解析!


  • 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:

玩转esp8266带你飞、加群付费QQ群,提高门槛,不喜的朋友勿喷勿加:434878850
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32


文章目录

    • @[toc]
      • 一、前言;
      • 二、`HmacMD5`在平时技术的应用;
      • 三、`HmacMD5`如何使用?
      • 四、`HmacMD5`在`esp8266`的实践;
      • 五、其他;

一、前言;

  • 上个月在我们的技术讨论群里面听到有同学问我,怎么加密我们传输信息,于是乎,我答应这个月会出一篇这样的文章给大家看看。对于一些设计硬件通讯协议的安全性问题,也许会有一些解决方法和提醒,或许有好处吧!
  • 因为MD5加密是不可逆的,也就是知道加密后的内容但是破解原文难度极大,不是不可能?即使跑字典的方式破解,也要跑二十几年!!

二、HmacMD5在平时技术的应用;

  • 对于传输过程中如何加密自己的信息不被修改?如何保障协议间的安全性?其实,传输过程中自己的信息被修改可能会存在的,因为不能保证百分百是原文。但是我们可以通过MD5校验就知道是不是原文;在许多应用中都广泛应用了MD5,打个比喻,我的服务器后端的数据库如何保存用户的密码信息?难道真的是保留原文吗?比如我的密码是xuhong123456,难道直接是保存xuhong123456到指定的字段吗?显然这是不正确的,存在着如果别人爬虫或者拿到了你的数据库,直接打开看不就完蛋了吗?产品经理会和你“直接打架咯!”!呵呵!

  • 那么如何保留我们 的密码到数据库,即使别人看到了也看不到呢?下面是我平时设计服务器数据库的一些步骤:

在这里插入图片描述


  • 针对上面流程图,我还有一些补充:

1:真正的密钥硬件和服务器可以约好!比如随机数,比如一个特定的数据!但是要保证这个密钥双方都是知道的!

2:在传输过程中,被抓包是正常的;但是伪造用户登陆连接服务器是另外一个问题,这个就需要一些安全性的连接了,比如https,在客户端提交数据需要本地证书!如果您的服务器与客户端的连接问题的安全性都没弄好,那就有点什么了!

3:如果你的连接问题不是很好,任何人都可以访问!基于这个加密密钥,我建议还是灵活的,会变的,比如随机数,但是双方都是要知道怎么加密!比如我的密码是csdnXuHoys,而我的随机数(也就是明文传输给服务器)是 56354,但是我们的加密的密钥不是56354,而是随机数加上1000,也就是57354,或者减去100,或者更多算法!于是在传输数据时候以用户名、密码、随机数、还有加密后的信息一起发给服务器,让服务器来校验是否伪造客户端来访问!


三、HmacMD5如何使用?

  • 比如,我的密码是xuhongvCsdn,我需要对此加密,我举最常见的两种方法加密方式:
    • MD5加密后有16位和 32位,但是没有加密密钥;
    • HmacMD5加密后仅仅有 32位,但是有加密密钥;
加密方式原文密钥加密后的内容
MD5xuhongvCsdn32位= f3d38c6920c933ada0b07dec9ea8d026 16位 = 20c933ada0b07dec
HmacMD5xuhongvCsdnxuhong1237f1897cec734920f449b77b959871195
  • 这里给大家推荐MD5在线加密网址工具:https://md5jiami.51240.com/
  • 这里给大家推荐HmacMD5在线加密网址工具:http://tools.jb51.net/password/hash_encrypt

四、HmacMD5在esp8266的实践;


  • 源码的实践过程就是一些数据的算法,这里我就不多说了!我教大家怎么使用我二次封装网上的代码,再适配我们的esp8266,无偿教给大家使用哈!
     //举个靶子,要加密的信息是  https://github.com/xuhongv
	uint8 info[30] = { "https://github.com/xuhongv" }, output16[32],
			output32[32], keyOutput[32];

	//md5 16位加密
	DeBugLog("before encrypt info: %s ", info);
	XH_MD5StartDigest(info, strlen((char *) info), XH_MD5_16, output16);
	DeBugLog("after encrypt Md5 %dbit: %s ", XH_MD5_16, output16);

	//md5 32位加密
	XH_MD5StartDigest(info, strlen((char *) info), XH_MD5_32, output32);
	DeBugLog("after encrypt Md5 %dbit: %s ", XH_MD5_32, output32);

	//Hmac md5加密,而且加密密码是 xuhong
	HMAC_XH_MD5(info, strlen((char *) info), "xuhong", keyOutput);
	DeBugLog("after encrypt HMAC_XH_MD5 : %s ", keyOutput);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

  • 因为在esp8266的SDK代码里面,有MD5Init()很多的方法和网上是一样的,但是又不开源怎么使用!于是乎,我整理过的代码,我重新命名,希望不要和官方的冲突!仅仅2个方法就可以实现加密,下面是方法函数说明!
/*****************************************************************************
 * 函 数 名  : XH_MD5StartDigest
 * 函数功能  : 开始 MD5加密
 * 输入参数  :
 *
 * strContent:要加密的数据
 * iLength:要加密的数据的长度
 * typeMd5: 16表示生成16位  32表示生成32位
 * outBuffer:要接收的字符串
 *
 * 返 回 值  : 无
 * 备    注  : 无
 *****************************************************************************/
void XH_MD5StartDigest(void const *strContent, u16 iLength, u8 typeMd5,
		u8 *outBuffer);


/*
 * function: HMAC_XH_MD5
 * parameter: u8 *inBuffer - 需要加密的字符串
 *            u16 len - 字符串长度
 *            u8 *ky - 初始密钥
 *            u8 output[16] - 输出
 */
void HMAC_XH_MD5(u8 *inBuffer, u16 len, u8 *ky, u8 *pUserOut) ;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 看看打印:

在这里插入图片描述


五、其他;


  • 本硬件代码下载:https://download.csdn.net/download/xh870189248/10765924
注:本文转载自blog.csdn.net的半颗心脏的文章"https://blog.csdn.net/xh870189248/article/details/83751704"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top