您知道在C++或C?中有一个演示公开私钥加密的教程吗?
我正在努力学习它是如何工作的,并最终使用Crypto++来使用公共私钥创建自己的加密。也许有一个Crypto++ PPKE教程?
也许有人能解释一下公用钥匙和私钥之间的关系(如果有的话)?有人能建议一些非常简单的公钥和私钥值(比如'char*32','char/32')来创建我的简单PPKE程序来理解这个概念吗?
发布于 2012-04-04 05:18:14
这是一个玩具版本的RSA,我写了一些时间前。使它成为玩具的是它只使用32位数。要提供任何有意义的安全级别,您需要为数学支持更大的数字(典型的键范围大约是1024-4096位,尽管后者可能完成不了多少任务)。
尽管如此,这确实实现了真正的RSA算法。插入bignum包所需的时间相对较少,因此这段代码可以使用实际大小的RSA密钥(尽管大多数其他实现可能更快)。
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <functional>
const int e_key = 47;
const int d_key = 15;
const int n = 391;
struct crypt : std::binary_function<int, int, int> {
int operator()(int input, int key) const {
int result = 1;
for (int i=0; i<key; i++) {
result *= input;
result %= n;
}
return result;
}
};
int main() {
std::string msg = "Drink more Ovaltine.";
std::vector<int> encrypted;
std::transform(msg.begin(), msg.end(),
std::back_inserter(encrypted),
std::bind2nd(crypt(), e_key));
std::transform(encrypted.begin(), encrypted.end(),
std::ostream_iterator<char>(std::cout, ""),
std::bind2nd(crypt(), d_key));
std::cout << "\n";
return 0;
}当然,这只涉及加密和解密本身--这还需要很长时间才能成为一个完整的安全系统。
正如注释所指出的,这完全是为了支持对算法的理解。我从来没有认真地使用过它,也许永远也不会。虽然支持真正的密钥大小是相当微不足道的,但我是否会这样做,这是个值得怀疑的问题--如果我这样做了,可能有人会把它误认为应该在实际数据上使用,而我并不真正想要这样做。
发布于 2012-04-04 05:25:06
:// www.muppetlabs.com/~breadbox/txt/rsa.html
这篇文章是为那些想要了解RSA但没有扎实数学背景的程序员而写的。这是唯一一篇让我真正理解RSA的文章。它不包含C或C++代码,但是一旦您了解了它是如何工作的,您应该能够编写自己的代码。(虽然我同意其他人的观点,不推荐它,但对于牧师理解RSA还是有帮助的)希望它能有所帮助!
https://stackoverflow.com/questions/10005124
复制相似问题