使用mbedtls的使用说明和AES加密方法(原来的PolarSSL)
关于PolarSSL
mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码。这是双重许可与Apache许可证 2.0版(与GPLv2许可也可)。网站上指出,mbed TLS的目标是“易于理解,使用,集成和扩展”
核心SSL 库用C编程语言编写,并实现SSL模块,基本加密功能并提供各种实用功能。与OpenSSL和TLS的其他实现不同,mbed TLS设计为适合小型嵌入式设备,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM。它也是高度模块化的:每个组件,如加密函数,可以独立于框架的其余部分使用。版本也可用于Microsoft Windows和Linux。因为mbed TLS是用C编程语言编写的,没有外部依赖,
PolarSSL的后期版本超过1.3.0,为内核分配和线程添加抽象层,以“支持与现有嵌入式操作系统的更好集成”——机器翻译的凑合着看。想看原版的自行Wikii
现在叫MbedTSL,PolarSSL源码,也许是最小巧的ssl代码库。高效、便于移植和集成。尤其适合嵌入式应用。
也就是说,无论是嵌入式还是桌面软件版的编程,只要你用的到AES,RSA等加密算法,你都可以直接拿过来源码放进你的工程中,进行编译管理,不用带着DLL,或者必须安装一些不必要的库,并且算法是标准库,所以你懂得。并且OpenSource。
关于代码的引用
之前搞了半天,谷歌,百度,冰,都用了,我竟然没找到一篇加入代码的资料,不知道是不是因为这个太简单还是怎么样,反正我是在这个地方饶了很大的圈子,下面就把使用的方法说一下,方便后来者不用费劲。
1、首先可以静态编译,然后引用
就是在下载下来之后(下载地址(上不去的自行翻·qiang):tls.mbed.org)
解压
你会发现如下:

OK,如果windows环境编译的话,那就直接“visualc”文件夹,一堆VC++ project文件,剩下的事情,我不想说了,有VS201x的话,打开直接F5,会编译出*.lib文件,剩下的引用就是引用静态库的内容。
2、如果你想把这些源码直接加入工程中
请看这个
“include”里面放的是库的头文件,“library”里面放的是源文件
库文件直接拷入到你的工程文件夹
头文件需要麻烦点:需要打开——拷贝“mbedtls”文件夹放入你的工程文件

放入之后
如果是VS
你需要做的就是:选项——属性——C++?——附加包含目录——添加——选中mbedtls的上一级文件
为什么需要上一级文件,因为头文件里面有很多这样的头文件引用:#include“mbedtls/config.h”,你不这样引用会搞事情的。
然后,连接器——附加库目录——添加library目录进入
剩下的事情就变得简单了,只需要拿来就用就好了。
这中间有一个坑:就是你在使用别人的aes & rsa算法的时候,有些声明,因为版本的问题会失效。这个时候你还需要使用的一个头文件就是:
compat-1.3.h
这里面就是一些#define *** ***,不用它会说你没声明???!!!
如果是GCC编译器使用CodeBlocks的话,你需要做也是把头文件目录,库文件目录相应的设置好,然后在使用。这个库一定是能够加入你的源码进行编译的,你需要相信这一点。
3、关于Aes算法
因为我只用了Aes算法,所以这里大体说说思路,我们知道Aes算法是对称加密的算法分为以下几种模式:
EBC:就是把数据块进行加密,没8或者16为一块,进行依次加密,知道完成,不足的补0
CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。
CFB/OFB实际上是一种反馈模式,目的也是增强破解的难度
参考:http://blog.csdn.net/aaaaatiger/article/details/2525561
如果你只用EBC:
那么打开aes.h,你可以看到:

你只用这个就够了,但是,但是这里只能输入输出16位,也就是说,你需要自己分块,不够的自己补全0,凑够16位。
过程:
1、声明这个结构体
mbedtls_aes_context
2、对结构体进行初始化
void mbedtls_aes_init( mbedtls_aes_context *ctx );
3、对加密Key进行设置
int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key,
unsigned int keybits );
4、使用这个函数进行加密,记得只能加密16个字符,包括‘\0’,所以你需要分割字符串
int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx,
int mode,
const unsigned char input[16],
unsigned char output[16] );
过程就是这个过程,如果你需要这个详细的资料,自行查看aes.h,里面虽然是英文的但是介绍还是听详细的。
其他模式 我也没用过(我没在怕的,哼!)
4、如果你要加密用于网络传输,记得这个:base64.h
这里面是base64的算法,直接可用

画框的都是重点有大用处。
OK,先这样,想到什么在补充
使用mbedtls的使用说明和AES加密方法(原来的PolarSSL)的更多相关文章
- PHP、Java对称加密中的AES加密方法
PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...
- python3 执行AES加密方法
cmd执行命令:pip install pycryptodome # -*- coding: utf-8 -*- # __author__ = 'Carry' import base64 from C ...
- javascript和c#aes加密方法互解
关键信息如下. javascript function Encrypt() { var key = CryptoJS.enc.Utf8.parse('8080808080808080'); var i ...
- AES加密和Base64混合加密
/// <summary> /// AES加密方法(AES加密和Base64混合加密) /// </summary> /// <param name="toEn ...
- Postman配置Pre-request scripts预请求对请求进行AES加密
1.首先,Postman的Pre-request scripts页面右边已经提供了一些模板,这些模板可以设置变量与环境变量,并使用双大括号对变量进行引用 {{info}} 2.对所有POST请求都进行 ...
- Java aes加密C#解密的取巧方法
摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Ja ...
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- 基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程
说明: 1.mbedTLS的前身是PolarSSL,开源免费. 主要提供了的SSL/TLS支持(在传输层对网络进行加密),各种加密算法,各种哈希算法,随机数生成以及X.509(密码学里公钥证书的格式标 ...
- AES加密 对应的 C#/JAVA 方法
由于最近在项目中用到,之前在网上找了好多,来来回回,终于整出来了. 贴出来以后用起来方便 C# [csharp] view plaincopyprint? #region AES加解密 /// < ...
随机推荐
- js转盘大抽奖 自定义概率
公司项目搞优惠活动,让做一个转盘抽奖的活动,转盘抽奖让他转起来 按照概率停止其实都麻烦,但是概率如果设置在前端就会很大的安全漏洞,所以无论为了安全性还是后期的维护问题都要把概率写到后台配置里然后读取配 ...
- PAT 1144 The Missing Number
1144 The Missing Number (20 分) Given N integers, you are supposed to find the smallest positive in ...
- canal demo搭建全记录
一.环境介绍 canal是阿里开源的中间件,主要用于同步mysql数据库变更.具体参见:https://github.com/alibaba/canal/releases 搭建环境: vmware c ...
- js 如何判断数组元素是否存在重复项
1.如何判断数组元素是否存在重复项 1)定义测试数组 //定义测试的数组(1个没有重复元素,1个有重复元素) var arr1 = new Array("111","33 ...
- ASP.NET MVC Display Mode 移动端视图 配置对微信内置浏览器的识别
最近在捣鼓一个稍微有点low的商城网站,没有计划做app却要求有个wap版,而前端又没有做成响应式,时间WTF,直接利用了asp.net mvc的Display Mode Provider. 使用方式 ...
- javascript 模板
今天想记录下对arttemplate模板的使用,哎,其实这玩意的兴起主要还是得从浏览器操作dom说起.如果修改浏览器的某一个dom节点就会引起文档流的重绘,然后这个重绘的耗时相当的大,是昂贵的开销.所 ...
- 跟随我在oracle学习php(14)
CSS3的@keyframes用法详解: 此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识: keyfram ...
- arrow function
简介 JavaScript 中,函数可以用箭头语法(”=>”)定义,有时候也叫“lambda表达式”.这种语法主要意图是定义轻量级的内联回调函数.例如: // Arrow function: [ ...
- springboot秒杀课程学习整理1-3
1)实现手机验证码功能,用户注册功能,用户登入功能(这里讲开发流程,及本人遇到的问题,具体实现请看代码) 1.拦截请求,获取请求参数(这里的consumes是个常量,可以定义在baseControll ...
- 《深入分析Java web技术内幕》读书笔记(一)
1.什么时网站 网站就是利用Html工具制作用于展示特定内容的网页集合,网站也是一种软件. 网站的开发过程需要考虑其完整性.目的性.扩展性和安全性. 2.C/S架构跟B/S架构 C/S架构:客户端和服 ...