Openssl库

来源:互联网 发布:flux软件怎么用 编辑:程序博客网 时间:2024/06/05 18:08

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;
0 0