abh*_*bhi 17 c linux openssl cryptography
嗨,我已经在我的linux机器上安装了openssl并通过头文件和文档(这是非常不充分的:().
我正在尝试构建一个使用对称加密算法的项目(在'c'中)(我专注于aes256cbc).问题是我很困惑如何在我的代码中使用库函数.
对于我实现的aes256cbc,我可以直接使用'aes.h'头文件中定义的函数(首先在我看来).
但在google搜索中我遇到了一些使用'evp.h'函数的教程来做这个http://saju.net.in/code/misc/openssl_aes.c.txt
是否有特定原因或直接访问aes.h函数更好.
而且,如果有人能够指出我使用openssl的加密库的任何类型的良好文档/教程将非常感激.
非常感谢
如果我天真,PS原谅我
Dan*_*ger 27
使用EVP API的优势在于,您可以以通用方式为OpenSSL支持的所有对称密码使用相同的API.这使得更换所使用的算法变得更容易,或者使算法在稍后阶段可由用户配置.您编写的大多数代码并非特定于您选择的加密算法.
以下是在CBC模式下使用AES-256进行加密的简单示例:
#include <stdio.h>
#include <openssl/evp.h>
int main()
{
EVP_CIPHER_CTX ctx;
unsigned char key[32] = {0};
unsigned char iv[16] = {0};
unsigned char in[16] = {0};
unsigned char out[32]; /* at least one block longer than in[] */
int outlen1, outlen2;
EVP_EncryptInit(&ctx, EVP_aes_256_cbc(), key, iv);
EVP_EncryptUpdate(&ctx, out, &outlen1, in, sizeof(in));
EVP_EncryptFinal(&ctx, out + outlen1, &outlen2);
printf("ciphertext length: %d\n", outlen1 + outlen2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为简单起见,我省略了错误处理.
IMO关于OpenSSL最重要的文档之一是Viega/Messier/Chandra的 OpenSSL 网络安全.它是从2002年(0.9.7)开始,所以不包括过去10年中对OpenSSL的更改,但IMO仍然是一种学习OpenSSL的痛苦方式,而不仅仅是使用手册页.