⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daes.cpp

📁 AES加密解密算法源代码
💻 CPP
字号:
// daes.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include <stdio.h>
#include "openssl/aes.h"


int main()
{
	unsigned char key[16+1] = "my-key-i-choosed"; // 128bits key (应该是真正的随机数才好)
	char pt1[16+5+1] = "0123456789abcdef12345";   // 明文
	char ct[16+5+1];  // 密文
	char pt2[16+5+1]; // 解密后的明文

	AES_KEY k;
	unsigned char iv1[16+1] = {"1023456789abcdef"}; // 16+1,加密用
	unsigned char iv2[16+1] = {"1023456789abcdef"}; // 16+1,解密用

	{	// single blcok test
		AES_set_encrypt_key(key, 16*8, &k); 
		AES_encrypt((unsigned char*)pt1, (unsigned char*)ct, &k);

		AES_set_decrypt_key(key, 16*8, &k);
		AES_decrypt((unsigned char*)ct, (unsigned char*)pt2, &k);

		if (memcmp(pt1, pt2, 16)==0)
			puts("AES block ok");
		else
			puts("AES block err");
	}

	{	// cfb mode (stream mode)
		int num=0;
		AES_set_encrypt_key(key, 16*8, &k); 
		AES_cfb128_encrypt((unsigned char*)pt1, (unsigned char*)ct,
			16+5, &k, (unsigned char*)iv1, &num, AES_ENCRYPT);

		num=0;
		AES_set_encrypt_key(key, 16*8, &k); // MUST as enc
		AES_cfb128_encrypt((unsigned char*)ct, (unsigned char*)pt2,
			16+5, &k, (unsigned char*)iv2, &num, AES_DECRYPT);		

		if (memcmp(pt1, pt2, 16+5)==0)
			puts("AES CFB mode ok");
		else
			puts("AES CFB mode err");
	}

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -