Openssl库 - RSA

RSA_new
创建RSA对象
RSA_public_encrypt
用公钥解密
RSA_private_decrypt
用私钥加密
示例
        RSA*    rsa;
        int     bits = 1024;
        BIGNUM  *big_num;
        unsigned char *input_string, *encrypt_string, *decrypt_string;
        input_string = (unsigned char*)"123456";
        rsa = RSA_new();
        big_num = BN_new();
        BN_set_word(big_num, RSA_3);
        if(RSA_generate_key_ex(rsa, bits, big_num, NULL) != 1){
                printf("函数RSA_generate_key_ex返回失败");
                return 1;
        }
        encrypt_string = (unsigned char*)calloc(RSA_size(rsa), sizeof(unsigned char));
        int encrypt_size = RSA_public_encrypt(strlen((char*)input_string),
                input_string, encrypt_string, rsa, RSA_PKCS1_OAEP_PADDING);
        decrypt_string = (unsigned char*)calloc(RSA_size(rsa), sizeof(unsigned char));
        int decrypt_size = RSA_private_decrypt(encrypt_size,
                    encrypt_string, decrypt_string, rsa, RSA_PKCS1_OAEP_PADDING);
        printf("encrypted string = ");
        for (int i=0; i < encrypt_size; ++i) {
                printf("%x%x", (encrypt_string[i] >> 4) & 0xf, encrypt_string[i] & 0xf);    
        }
        printf("\n");
        printf("decrypted string = %s\n", decrypt_string);

        RSA_free(rsa);
        free(encrypt_string);
        free(decrypt_string);
        return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值