C++加密解密(学习资料)
1、对称加密算法
对称加密算法是指加密和解密使用同一密钥的加密算法,常见的对称加密算法有AES、DES、3DES等。这里我们以AES为例,介绍其C++实现方法。
AES算法使用分组密码,将明文分成若干个块,每个块长度为128位(16字节),然后使用相同的密钥进行加密。加密过程涉及到四个基本操作:SubBytes、ShiftRows、MixColumns和AddRoundKey。其中SubBytes、ShiftRows和MixColumns都是一些简单的元素替换、移位和乘法操作,而AddRoundKey是一个简单的异或操作。
如下:
#include <iostream>
#include <cstring>
#include <openssl/aes.h>
using namespace std;
// 加密函数
void aes_encrypt(unsigned char *in, unsigned char *out, unsigned char *key, int key_len) {
AES_KEY aes;
AES_set_encrypt_key(key, key_len, &aes);
AES_encrypt(in, out, &aes);
}
// 解密函数
void aes_decrypt(unsigned char *in, unsigned char *out, unsigned char *key, int key_len) {
AES_KEY