添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

rsa加密文件c语言实例

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格式的文件中。接着使用公钥对明文进行加密,使用私钥对密文进行解密,最后输出加密前后的明文和解密后的明文。

注意,这里为了简化示例,使用的是字符串类型的数据。在实际应用中,需要根据需要将文件读入内存中,然后再进行加密和解密操作。

  •