c语言openssl实现RSA加密
时间: 2023-11-13 12:05:58 浏览: 229
RSA加密 C语言实现
实现RSA加密,可以使用openssl库中的RSA函数。以下是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main()
{
// 生成RSA密钥对
RSA *keypair = RSA_generate_key(2048, RSA_F4, NULL, NULL);
if (keypair == NULL) {
printf("Failed to generate RSA keypair\n");
return 1;
}
// 明文
char *plaintext = "Hello, world!";
int plaintext_len = strlen(plaintext);
// 加密
int ciphertext_len = RSA_size(keypair);
unsigned char *ciphertext = malloc(ciphertext_len);
int ret = RSA_public_encrypt(plaintext_len, (unsigned char *) plaintext, ciphertext, keypair, RSA_PKCS1_OAEP_PADDING);
if (ret < 0) {
printf("Failed to encrypt\n");
return 1;
}
// 输出密文
printf("Ciphertext: ");
for (int i = 0; i < ciphertext_len; i++) {
printf("%02X", ciphertext[i]);
}
printf("\n");
// 释放内存
free(ciphertext);
RSA_free(keypair);
return 0;
}
```
在该程序中,首先使用RSA_generate_key函数生成一个2048位的RSA密钥对。然后,将明文字符串"Hello, world!"以RSA_PKCS1_OAEP_PADDING填充方式进行加密,得到密文。最后,输出密文,并释放内存。
需要注意的是,此处使用了RSA_PKCS1_OAEP_PADDING填充方式,这是一种更安全的填充方式。如果需要使用其他填充方式,可以参考openssl库中的文档。
阅读全文