怎么使用Openssl,已经有Key文件,怎么使用这个文件进行加密和解密

如何使用Openssl,已经有Key文件,如何使用这个文件进行加密和解密?
现在和第三方公司合作给客户开发一个东西,我这边需要将一个字符串加密以后传递给第三方公司提供的jsp页面。加密方式是第三方提供一个Key文件,就像银行网银用的文件证书一样,使用RSA方式加密的。现在第三方公司给我了两个文件:server.cer和test.pfx。
  他们给的ReadME文件内容如下:
pfx证书密码:123456
pfx里包含一对公钥和私钥,可以用于解密和加密两个功能。
cer里只包含公钥,只能用于加密。
给到pfx的目的是方便你们自行测试解密后的数据是否正确,如果用cer加密的密文,用pfx可以正确解密的话,代码就没有问题了,之后我在给你具体的URL地址和正式的只包含公钥的cer key即可。

  从来没接触过这东西,第三方公司全是Java工程师,也不能提供一个C++的Demo,我上网查了一些资料,说是可以使用Openssl库来做,也找了一些demo,但是都是直接加密文件的,而且运行过程中报异常。请教各位了,怎么解决!

------解决方案--------------------
飘 人气
------解决方案--------------------
http://www.openssl.org/
------解决方案--------------------
openssl的库最好是使用Linux运行,我做过解析证书的,有段时间了,好像是p12格式的,利用的是X509的结构解析的,公钥和私钥一个方法就搞定~~openssl可以搞定的,我有openssl的资料~~300页的文档~~~不过在公司,需要的话,周一给你吧~~站内PM啊~~~pfx没了解过~最好的做法就是Linux下的C++开发,代码在win下打包整dll或是so,使用java的JNI来调用~~~最好是C++编程,不要使用C~~C和JNI的衔接貌似不是很好~~
openssl版本问题要建议,不要使用最新的版本~~openssl-0.9.8k.tar.gz还不错的~~

有一段demo,解压后openssl-0.9.8k\openssl-0.9.8k\demos,很多例子的,你先看看~~推荐Linux啊~ 地址:http://openssl.org/source/ 自己编译下~~不想编译直接下载人家编译好的也行~就是lib win32(so Linux)和include文件~
C/C++ code
 
int main(int argc, char **argv)
{
    FILE *fp;
    EVP_PKEY *pkey;
    X509 *cert;
    STACK_OF(X509) *ca = NULL;
    PKCS12 *p12;
    int i;
    if (argc != 4) {
        fprintf(stderr, "Usage: pkread p12file password opfile\n");
        exit (1);
    }
    SSLeay_add_all_algorithms();
    ERR_load_crypto_strings();
    if (!(fp = fopen(argv[1], "rb"))) {
        fprintf(stderr, "Error opening file %s\n", argv[1]);
        exit(1);
    }
    p12 = d2i_PKCS12_fp(fp, NULL);
    fclose (fp);
    if (!p12) {
        fprintf(stderr, "Error reading PKCS#12 file\n");
        ERR_print_errors_fp(stderr);
        exit (1);
    }
    if (!PKCS12_parse(p12, argv[2], &pkey, &cert, &ca)) {
        fprintf(stderr, "Error parsing PKCS#12 file\n");
        ERR_print_errors_fp(stderr);
        exit (1);
    }
    PKCS12_free(p12);
    if (!(fp = fopen(argv[3], "w"))) {
        fprintf(stderr, "Error opening file %s\n", argv[1]);
        exit(1);
    }
    if (pkey) {
        fprintf(fp, "***Private Key***\n");
        PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL);
    }
    if (cert) {
        fprintf(fp, "***User Certificate***\n");
        PEM_write_X509_AUX(fp, cert);
    }
    if (ca && sk_num(ca)) {
        fprintf(fp, "***Other Certificates***\n");
        for (i = 0; i < sk_X509_num(ca); i++) 
            PEM_write_X509_AUX(fp, sk_X509_value(ca, i));
    }
    fclose(fp);
    return 0;
}