EVP_EncryptInit_ex使用ecb加密
时间: 2023-09-16 19:13:40 浏览: 147
EVP_EncryptInit_ex函数可以使用ECB模式进行加密,下面是一个简单的例子:
```c
#include <openssl/evp.h>
int main() {
// 初始化加密上下文
EVP_CIPHER_CTX *ctx;
ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
// 设置加密算法和密钥
unsigned char key[] = "0123456789abcdef";
EVP_EncryptInit_ex(ctx, EVP_aes_128_ecb(), NULL, key, NULL);
// 待加密的明文
unsigned char plaintext[] = "hello, world!";
int plaintext_len = strlen(plaintext);
// 计算加密后的密文长度
int ciphertext_len = plaintext_len + EVP_CIPHER_CTX_block_size(ctx);
unsigned char ciphertext[ciphertext_len];
// 加密明文
int len;
EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len);
int ciphertext_len2 = len;
// 结束加密过程
EVP_EncryptFinal_ex(ctx, ciphertext + len, &len);
ciphertext_len2 += len;
// 输出加密结果
printf("Ciphertext:\n");
for (int i = 0; i < ciphertext_len2; i++) {
printf("%02x", ciphertext[i]);
}
printf("\n");
// 清理加密上下文
EVP_CIPHER_CTX_cleanup(ctx);
EVP_CIPHER_CTX_free(ctx);
return 0;
}
```
在这个例子中,我们使用了EVP_aes_128_ecb()算法来加密明文,key数组代表密钥。由于ECB模式不需要使用初始化向量,因此第五个参数设置为NULL。其他步骤与使用CBC模式相同。
阅读全文