Mbedtls加密组件库使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_19734597/article/details/102758330

下载与安装

   mbedtls-2.6.0库我们要在工程中引用的目录有include,library和visualc这3文件夹:

  • include: 库头文件所在
  • library:库源文件(.c)所在
  • visualc:工程文件所在,使用VS2010打开mbedTLS.sln文件或者更高版本升级项目,生成Release和Debug,文件夹下会有mbedTLS.lib静态库文件

   在项目中加入头文件引用和导入静态库

  • 首先,右键项目,属性->配置属性->C/C++->常规,在常规中找到附加包含目录,写上include,即你项目下的include文件夹,你可以选择你喜欢的名字
  • 在属性->配置属性->链接器->常规,在常规中找到附加库目录,写上lib,即你项目下的lib文件夹
  • 在属性->配置属性->链接器->输入,在输入中找到附加依赖项,加上那几个lib文件的名字

使用示例:

AES加密解密

mbedtls_aes_context aes_ctx;
//密钥数值  
unsigned char key[16] = { 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x00 };
//明文空间  
unsigned char plain[16] = "helloworld";
//解密后明文的空间  
unsigned char dec_plain[16] = { 0 };
//密文空间  
unsigned char cipher[16] = { 0 };
mbedtls_aes_init(&aes_ctx);
//设置加密密钥  
mbedtls_aes_setkey_enc(&aes_ctx, key, 128);
printf("\n*********** 加密前:%s\n", plain);
mbedtls_aes_crypt_ecb(&aes_ctx, MBEDTLS_AES_ENCRYPT, plain, cipher);
printf("\n*********** 加密后:%s\n", cipher);
//设置解密密钥  
mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
mbedtls_aes_crypt_ecb(&aes_ctx, MBEDTLS_AES_DECRYPT, cipher, dec_plain);
printf("\n*********** 解密后:%s\n", dec_plain);
mbedtls_aes_free(&aes_ctx);
system("pause");

 MD5加密

unsigned char encrypt[] = "admin";    //21232f297a57a5a743894a0e4a801fc3
unsigned char decrypt[16];
mbedtls_md5_context md5_ctx;
mbedtls_md5_init(&md5_ctx);
mbedtls_md5_starts(&md5_ctx);
mbedtls_md5_update(&md5_ctx, encrypt, strlen((char *)encrypt));
mbedtls_md5_finish(&md5_ctx, decrypt);
printf("加密前:%s\n加密后:", encrypt);
for (int i = 0; i<16; i++)
{
    printf("%02x", decrypt[i]);
}
mbedtls_md5_free(&md5_ctx);

 SHA1加密

unsigned char encrypt[] = "admin";
unsigned char decrypt[20];
mbedtls_sha1_context sha1_ctx;
mbedtls_sha1_init(&sha1_ctx);
mbedtls_sha1_starts(&sha1_ctx);
mbedtls_sha1_update(&sha1_ctx, encrypt, strlen((char *)encrypt));
mbedtls_sha1_finish(&sha1_ctx, decrypt);
printf("加密前:%s\n加密后:", encrypt);
mbedtls_sha1_free(&sha1_ctx);
for (int i = 0; i<20; i++)
{
    printf("%02x", decrypt[i]);
}

猜你喜欢

转载自blog.csdn.net/qq_19734597/article/details/102758330
今日推荐