如何在没有Openssl或其他库的情况下加载RSA密钥对

时间:2014-10-17 13:18:05

标签: c++ c rsa public-key-encryption

CCFor一个项目我正在寻找一个简单的RSA实现,通过一个不安全但现有的通信协议来交换一个小秘密。为了保持它小巧,易于移植到不同平台,我不想链接OpenSSL或Crypto ++。我发现这是axTLS项目的一部分,它具有合适的许可证和易于提取的RSA算法。用于加密的rsa函数需要两个组件(因为它使用公钥)。 pup_exp是65537,模数是密钥的公共部分,priv_exp是私有的。

void RSA_priv_key_new(RSA_CTX **ctx, 
        const uint8_t *modulus, int mod_len,
        const uint8_t *pub_exp, int pub_len,
        const uint8_t *priv_exp, int priv_len
    )

为方便用户使用,我希望加载像OpenSSL这样的库生成的X.509或PEM等证书,但是在C或C ++代码中不包含整个OpenSSL内容。但目前我甚至没有找到一个可理解的常用密钥文件格式文档。

1 个答案:

答案 0 :(得分:1)

有两种类型的RSA公钥格式被广泛使用,它们是PKCS#1和X.509(SubjectPublicKeyInfo)。 我使用了libtomcrypt(http://libtom.org/?page=features)。它支持RSA密钥格式和非常便携。许可证不受限制。