使⽤mbedtls的使⽤说明和AES加密⽅法(原来的PolarSSL)关于PolarSSL
codeblocks带编译器版本mbed TLS(以前称为PolarSSL)是实现,并且需要相应的加密算法和⽀持代码。这是与 2.0版(与也可)。⽹站上指出,mbed TLS的⽬标是“易于理解,使⽤,集成和扩展”
核⼼SSL ⽤,并实现SSL模块,基本功能并提供各种实⽤功能。与和TLS的其他实现不同,mbed TLS设计为适合⼩型嵌⼊式设备,最⼩完整的TLS堆栈需要60KB的程序空间和64KB的RAM。它也是⾼度模块化的:每个组件,如加密函数,可以独⽴于框架的其余部分使⽤。版本也可⽤于和。因为mbed TLS是⽤,没有外部依赖,
PolarSSL的后期版本超过1.3.0,为内核分配和线程添加抽象层,以“⽀持与现有嵌⼊式操作系统的更好集成”——机器翻译的凑合着看。想看原版的⾃⾏Wikii
现在叫MbedTSL,PolarSSL源码,也许是最⼩巧的ssl代码库。⾼效、便于移植和集成。尤其适合嵌⼊式应⽤。
也就是说,⽆论是嵌⼊式还是桌⾯软件版的编程,只要你⽤的到AES,RSA等加密算法,你都可以直接拿过来源码放进你的⼯程中,进⾏编译管理,不⽤带着DLL,或者必须安装⼀些不必要的库,并且算法是标准库,所以你懂得。并且OpenSource。
关于代码的引⽤
之前搞了半天,⾕歌,百度,冰,都⽤了,我竟然没到⼀篇加⼊代码的资料,不知道是不是因为这个太简单还是怎么样,反正我是在这个地⽅饶了很⼤的圈⼦,下⾯就把使⽤的⽅法说⼀下,⽅便后来者不⽤费劲。
1、⾸先可以静态编译,然后引⽤
就是在下载下来之后(下载地址(上不去的⾃⾏翻·qiang):)
解压
你会发现如下:
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实际上是⼀种反馈模式,⽬的也是增强破解的难度
如果你只⽤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,先这样,想到什么在补充