cryptography

LibTom 加密之AES

下面的C程序实现的功能:
将字符串c1用AES方法加密放在c2中,再解密放在c3中,密钥是myKey


加密部分:

首先引入头文件

#include "tomcrypt.h"  
#pragma comment (lib,"tomcrypt.lib")

声明变量:加密密钥、加密状态

unsigned char myKey[32] = "7187654321";	     
symmetric_key skey = 0;

加密前初始化状态(密钥,密钥长度,迭代次数(0: 使用推荐值),加密状态)

aes_setup(myKey, 32, 0, &skey);

需要加密的字符串长度任意
输出长度>= 输入长度,分段长度的倍数(这里就是16的倍数)

unsigned char c1[32] = "硬件研发中心";		   
unsigned char c2[32] = {0};

分段加密,每段长度为16 (一般不可能只有2段,自己写循环)

aes_ecb_encrypt(&c1[0], &c2[0],&skey);     
aes_ecb_encrypt(&c1[16], &c2[16],&skey);

输出密文

printf_s("encrypted data:\n");
for (int i=0;i<32;i++)
{
	printf_s("%x",c2[i]);
}
printf_s("\n\n");

解密部分:

定义c3数组,存放解密数据

unsigned char c3[32] = {0};

解密前初始化状态,和加密的状态是完全一致的

aes_setup(myKey, 32, 0, &skey);

分段解密

aes_ecb_decrypt(&c2[0], &c3[0],&skey);     
aes_ecb_decrypt(&c2[16], &c3[16],&skey);

打印解密数据

printf_s("decrypted data:\n");
for (int i=0;i<32;i++)
{
	printf_s("%c",c3[i]);
}
printf_s("\n\n");

查看GitHub 完整代码

Websites Focus On Security

安全牛
[安全牛]是近期通过36Kr了解到的一个安全创业网站,此网站介绍了很多安全技术,

包括:

  • 移动安全
  • web安全
  • 数据安全
  • 网络安全
  • 黑客攻防
  • 云安全
  • 端点安全
  • 应用安全
  • 安全开发

另外,安全牛网解读了很多当下的安全形势以及威胁。