RSA加密是一种非对称加密算法,可以用于保护数据的机密性。在C语言中,可以使用OpenSSL库来实现RSA加密。
以下是一个使用OpenSSL库实现RSA加密的C语言示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main()
char plain_text[1024] = "Hello, World!"; // 明文
char encrypted[1024]; // 加密后的密文
char decrypted[1024]; // 解密后的明文
// 生成RSA密钥对
RSA *rsa = RSA_generate_key(2048, RSA_F4, NULL, NULL);
if (!rsa) {
printf("Failed to generate RSA key pair\n");
return -1;
// 将公钥和私钥写入PEM格式文件
FILE *fp_pub = fopen("public_key.pem", "wb");
FILE *fp_pri = fopen("private_key.pem", "wb");
PEM_write_RSAPublicKey(fp_pub, rsa);
PEM_write_RSAPrivateKey(fp_pri, rsa, NULL, NULL, 0, NULL, NULL);
// 加密
int encrypted_len = RSA_public_encrypt(strlen(plain_text), (unsigned char *)plain_text, (unsigned char *)encrypted, rsa, RSA_PKCS1_PADDING);
if (encrypted_len == -1) {
printf("Failed to encrypt data\n");
return -1;
// 解密
int decrypted_len = RSA_private_decrypt(encrypted_len, (unsigned char *)encrypted, (unsigned char *)decrypted, rsa, RSA_PKCS1_PADDING);
if (decrypted_len == -1) {
printf("Failed to decrypt data\n");
return -1;
printf("Plain text: %s\n", plain_text);
printf("Encrypted text: %s\n", encrypted);
printf("Decrypted text: %s\n", decrypted);
// 释放RSA密钥
RSA_free(rsa);
fclose(fp_pub);
fclose(fp_pri);
return 0;
上面的代码首先生成一个2048位的RSA密钥对,然后将公钥和私钥分别写入PEM格式的文件中。接着使用公钥对明文进行加密,使用私钥对密文进行解密,最后输出加密前后的明文和解密后的明文。
注意,这里为了简化示例,使用的是字符串类型的数据。在实际应用中,需要根据需要将文件读入内存中,然后再进行加密和解密操作。