手机怎么做黑网站网络公司网络推广
news/
2025/9/29 19:50:02/
文章来源:
手机怎么做黑网站,网络公司网络推广,惠东网站建设,平谷青岛网站建设AES加密是美国联邦政府采用的一种块加密标准#xff0c;如今已经被全世界广为使用。嵌入式开发中我们也经常会用到加密解密算法#xff0c;如果没有硬件模块来实现#xff0c;就需要用到C代码软件实现。下面介绍调用mbedTLS中的AES加密解密函数实现AES算法。
mbedTLS是一个…AES加密是美国联邦政府采用的一种块加密标准如今已经被全世界广为使用。嵌入式开发中我们也经常会用到加密解密算法如果没有硬件模块来实现就需要用到C代码软件实现。下面介绍调用mbedTLS中的AES加密解密函数实现AES算法。
mbedTLS是一个开源TLS协议栈主要用于嵌入式开发其源代码网址为https://tls.mbed.org/aes-source-code。在该页面上点击downloadmbedTLS即可下载最新的协议栈解压该压缩包就可以得到协议栈源代码。协议栈中的各种算法都独立封装在C文件中彼此耦合度较低目的是便于调用。我这里下的是2.2.1版本解压后可以看到mbedtls-2.2.1\include\mbedtls路径下有许多header文件将其添加到IDE的头文件中。在mbedtls-2.2.1\library下有许多c文件我们只添加需要用到的aes.c。
这里使用Visual Studio2013 C/C环境进行编译演示。新建控制台应用空工程。在Header Files文件夹下添加头文件注意连文件夹一起添加因为C文件中的include是包含路径的。然后把aes.c添加到source文件夹里。此时直接编译就能通过啦 接下来就是在主函数里调用函数。这里调用了ECB模式和CBC模式两种。源代码如下
#includestdio.h
#include mbedtls/aes.h
#include mbedtls/compat-1.3.h#define AES_ECB 0
#define AES_CBC 1
#define AES_CFB 2
#define AES_CTR 3
#define MODE AES_ECBunsigned char key[16] { 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 };
unsigned char plain[32] { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 };
unsigned char plain_decrypt[32] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
unsigned char IV[16];
unsigned char cypher[32];
int i 0;
mbedtls_aes_context aes;void SetIV()
{int i;for (i 0; i 16; i){ IV[i] 0x55;}}
int main()
{if (MODE AES_ECB){mbedtls_aes_setkey_enc(aes, key, 128);// set encrypt key mbedtls_aes_crypt_ecb(aes, AES_ENCRYPT, plain, cypher);mbedtls_aes_setkey_dec(aes, key, 128);// set decrypt keymbedtls_aes_crypt_ecb(aes, AES_DECRYPT, cypher, plain_decrypt);i; }if (MODE AES_CBC){mbedtls_aes_setkey_enc(aes, key, 128);// set encrypt keySetIV();mbedtls_aes_crypt_cbc(aes, AES_ENCRYPT, 32, IV, plain, cypher);mbedtls_aes_setkey_dec(aes, key, 128);// set decrypt keySetIV();mbedtls_aes_crypt_cbc(aes, AES_DECRYPT, 32, IV, cypher, plain_decrypt);i; }
} 单步运行在 debug 窗口中可以观察到 cypher 数组的值改变变为加密后的值以及 plain _decrypt 数组中的值变为解密后的值也就是和 plain 数组中一样。J~
任何程序错误以及技术疑问或需要解答的请添加
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922194.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!