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;
发布了40 篇原创文章 · 获赞 6 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章