c++ - 如何在没有 Openssl 或其他库的情况下加载 RSA key 对

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

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

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 内容。但目前我什至没有找到通用 key 文件格式的可理解文档。

最佳答案

广泛使用的RSA公钥格式有两种,分别是PKCS#1和X.509(SubjectPublicKeyInfo)。 我使用过 libtomcrypt( http://libtom.org/?page=features )。它支持 RSA key 格式并且非常便携。许可证是非限制性的。

关于c++ - 如何在没有 Openssl 或其他库的情况下加载 RSA key 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26425933/

相关文章:

c++ - 将 0,1,2,...,N-1 作为参数传递给函数

c++ - 如何根据目标文件中缺少的符号来实例化模板?

c++ - acosl 不在 std 命名空间中?

c - 下载 conio.h 并在 Virtualbox 上使用 GUI

c - 在c中获取文件参数

java - PEM 到 Android 中的 PublicKey

c# - 我可以使用程序集 PublicKey 来解密用相应的 PrivateKey 加密的字符串吗?

C++:初始化变量;重载隐式构造函数?

c - 如何在Ubuntu上使用 `c-cpp-reference`?

javascript - 用于派生 RSA 私钥的数字何时应以 `00` 开头?