转自:https://blog.csdn.net/kangerdong/article/details/82432701

把所有的准备工作都做完了以后,可以将加密算法移植到我们具体的项目中去了,在STM32中在出厂前已经将RSA的公钥私钥,CA数字签名和CA公钥烧写在STM32的flash上了。

4.1 身份认证

在wifi连接上服务器上后,客户端首先发起交换密钥请求,客户端将自己的RSA公钥,CA数字签名发送给服务器,服务器将自己的公钥,CA数字签名(是利用CA的私钥对服务器公钥机密的一段密文),以及加密后(利用的是客户端的公钥加的密)的AES密钥(为了减小STM32的负担,随机密钥由服务器产生就随身份认证的信息一起发送过来了)发送给客户端。客户端接收到服务器的信息后,首先对服务器公钥做MD5处理,然后调用STM32密码库中的签名认证函数进行认证,通过则进行后续操作,失败客户端进入休眠状态(wifi不可操作),服务器进行类似的处理。

4.2 解密AES密钥

将得到的包含AES密钥的密文利用RSA私钥进行解密,将得到AES的随机密钥。随后的数据传输将利用这个密钥和AES算法进行加密传输。 
项目上的代码不好贴上面还有好多的细节问题需要处理,大多数是C语言的数据处理问题,有什么问题可以留言我。服务器利用的是openssl加密库,可以实现生成rsa,加密,解密等等一系列操作,比STN32的加密库要强好多好多。

4.3 利用openssl生成RSA密钥对

利用 openssl genrsa -out rsa_private_key.pem 1024 生成rsa密钥,这个文件包含了私钥和公钥。 

利用 openssl asn1parse -in rsa_private_key.pem 

说起这个密钥问题到现在都有点心酸负责服务器那边的人死活不认n,e,d,服务器那边出来的密钥都是什么PKCS#8格式的说是需要我这边来进行处理,我当时也是懵逼的这又是些什么东西啊。无奈之下又去研究PKCS#8和n,e,d的关系,有衍生出一系列的RSA密钥的规范问题,但是这不是最恐怖的。最恐怖的是STM32F103C8T6的flash爆炸了。我也有心无力,最后我只能从服务器端入手找到了如上的方法,经过几经周转对方终于答应放弃了他们原先的密码库换成了openssl,之后也还有许多的问题这里就说说这个相对拖得比较久一点的问题。

[加密]非对称加密STM32实现的更多相关文章

  1. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法

    对称加密 非对称加密 不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法 原理 对称加密算法中,数据加密和解密 ...

  2. 个人理解c#对称加密 非对称加密 散列算法的应用场景

    c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...

  3. Asp.Net 常用工具类之加密——非对称加密RSA算法

    踏入程序员这个行业也有几年了,几年中有收获(技术加强),有付出(时间和亚健康状态).当然喏,并不后悔,代码路还长!!! On The Way,永不止步!!! 开发过程中也积累了一些自己的经验.代码块和 ...

  4. [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)

    对称/非对称/混合加密的冷知识 数据在互联网上传输,要考虑安全性. 讲到安全,要从三方面考虑: 1.authentication 每一个IP包的认证,确保合法源的数据 2.data integrity ...

  5. SpringCloud-分布式配置中心【加密-非对称加密】

    案例代码:https://github.com/q279583842q/springcloud-e-book 非对称加密 一.什么是非对称加密(Asymmetric encryption) 二.Jav ...

  6. 对称加密&非对称加密

    对称密钥密码算法的特点: 算法简单,加/解密速度快,但密钥管理复杂,不便于数字签名: 非对称密钥密码算法的特点: 算法复杂,加/解密速度慢,密钥管理简单,可用于数字签名. 所以将两者结合起来,形成混合 ...

  7. HTTPS科普扫盲帖 对称加密 非对称加密

    http://www.cnblogs.com/chyingp/p/https-introduction.html

  8. HTTPS加密那点事-对称、非对称加密、数字证书

    转自:[漫画]https 加密那点事 首先,HTTP协议的缺点:没有对数据进行加密,都是明文传输的.如果要改进这种明文传输的协议,该如何做呢? 对称加密: 在每次发送真实数据之前,服务器先生成一把密钥 ...

  9. 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理

    http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...

随机推荐

  1. 洛谷P1578 奶牛牧场(悬线法思想)

    题目 悬线法的思想--即扫描线的思想,每个矩阵必定是由两个障碍来构成左右边界或者上下边界. 如果此两个障碍组成了左右边界,枚举这两个障碍中途更新这两个障碍之间的矩阵上下边界,并且更新最大值. 考虑如何 ...

  2. C语言实现linux之who功能

    /* who_test.c */ #include<stdio.h> #include<string.h> #include<getopt.h> #include& ...

  3. 【BigData】Java基础_类和对象的基本使用

    1.需求描述 ①定义一个学生类,然后根据该类创建3个具体的学生对象 类中包含信息:学生姓名.学号.年龄.性别.所在地址 ②将这三个学生对象存入到数组中 ③然后将数组对象按照学生的年龄倒序排序 2.代码 ...

  4. 解决coursera笔记本(ipynb)打不开的问题

    最近在coursera听课,发现notebook打不开,一直显示加载中. 想到了可能被墙,苦于没有梯子.最后F12,发现有报错 Failed to load resource: net::ERR_CO ...

  5. 2018的Java

    少用复制黏贴 程序员很多时候都习惯复制黏贴,这里复制一点,那里复制一点,拼拼凑凑的搞出了一段代码.这是一种常态,毕竟没有必要重复造轮子,在开发的时候,讲究的是效率,讲究速度,有时候也是不得不这样做.但 ...

  6. Spring boot配置文件application.properties和bootstrap.properties的区别

    spring boot 有两种配置文件 (1)application.properties(application.yml) 系统级别的一些参数配置,这些参数一般是不会变动的 (2)bootstrap ...

  7. Python3.7 - Argparse模块的用法

    argparse 是一个命令行参数解析模块. argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离 ...

  8. jmeter通过BeanShell,实现对接口参数HmacSHA256加密(转)

    jmeter通过BeanShell,实现对接口参数HmacSHA256加密2019-04-29 05:10 ps. 最近抓包网站的登陆请求,发现就2个参数,用户名和密码,通过工具去请求这个接口,一直返 ...

  9. drf面试题及总结

    drf面试题及总结 1.什么是前后端分离 2.什么是restful规范 3.模拟浏览器进行发送请求的工具 4.查找模板的顺序 5.什么是drf组件 6.drf组件提供的功能 7.drf继承过哪些视图类 ...

  10. MarkDown的常规用法

    MarkDown的常规用法 标题 # 一级标题 ## 二级标题 ... ###### 六级标题 列表 第二级 - 和 空格 + 和 空额 * 和 空格 第三级 代码块 多行代码块 3个` 回车 单行代 ...