我正在尝试使用公钥加密来签名并稍后验证文件。该文件是一个简单的纯文本文件,其中包含用于创作目的的用户信息。
我为公钥加密算法的C实现尝试了不同的站点,但我没有找到任何东西。许多站点都指向使用证书(x.509等),但这远远超出我的需要。我只是在寻找一种生成公钥和私钥的方法,并使用一种相对众所周知的算法来签名和验证文件。
那里有指向纯C实现的指针吗?重点是我可以重用的代码,而不是外部库。主要问题是我不想为了拥有一个非常基本的公钥系统而必须链接完整的lib及其依赖项。
感谢。
答案 0 :(得分:10)
OpenSSL是一个非常好的方案。您可以使用加密库部分,它提供基本的RSA实现。这可能符合您的要求。
Cryptlib是另一种可能适合您的选择。它有一些奇怪的许可问题,所以请考虑一下,具体取决于你将如何使用它。
Crypto++是一套不同的加密技术,包括RSA,所以你可以试试。
最后,RSA实现起来并不复杂,所以你甚至可以使用GMP自己实现它,它提供了你需要的必要数学函数。
答案 1 :(得分:5)
您可能希望查看备受尊重,已调试和已测试的OpenSSL库。虽然OpenSSL主要用于SSL / TLS网络,但它包含许多加密协议的非常好的实现,这些协议通常用于一般的加密。
希望这有帮助!
答案 2 :(得分:2)
DJ Bernstein的curve25519可让您创建公钥/私钥对。它没有签名功能,但你应该能够轻松搞清楚这一部分。
更新:同时,还有Ed25519已经找到了签名生成的东西,没有你必须跳过篮球。同一作者,相同的软件可用性(例如“Donna”实现和python绑定),相同的易用性,可比的速度。
最初的实施以及“Donna”实施都是在非常自由的许可下提供的。
您需要编译一个文件并调用一个函数来生成密钥对,而且速度非常快。对公钥没有晦涩的要求。所有人都需要一些“便宜,快速,简单的公钥密码”。
答案 3 :(得分:2)
我认为有一个答案[1]符合您的问题:: Small RSA or DSA lib without dependencies
你可能会发现LibTomCrypt很有用。它用C语言编写,支持RSA和 DSA(以及许多其他算法),并且是公共领域 软件。您可以在此处阅读其功能:http://libtom.org/?page=features
[1] https://stackoverflow.com/a/1735526/68338(由https://stackoverflow.com/users/33837/emerick-rogul提供)
答案 4 :(得分:1)
this question上的答案包含一些指向其他图书馆的有趣链接。
但是,我记得在C中存在一些用于RSA和私钥加密的参考源代码。我会在找到后立即添加链接; - )
修改强>
我刚刚找到“此链接”(http://www.hackchina.com/en/cont/93068 - 自行承担风险) - 不确定该代码的来源和详细信息。但是,在过去,原始RSA参考实现的链接包含在OpenSSL源代码或其文档中。这是基于cryptsoft.com的库。我确信仍然可以在www.rsa.com/rsalabs/的某处找到源代码 - 但我找不到它,而且我现在已经没时间了。祝你好运; - )