проблемы с RSA
В общем ребят, такое дело.
У меня есть публичный ключ длиной 128 байт. Мне нужно этим ключом зашифровать некие данные.
И тут встала проблема. Как известно, в RSA публичный ключ состоит из двух частей:
1) E (рандомное число, которое должно быть взаимопростым с произведением (p-1)*(q-1))
2) N (N=p*q)
И вопрос в том, как мне узнать какая часть 128-байтного ключа N, а какая E?
Просто я достал несколько реализаций RSA на срр и во всех нужно использовать не публичный ключ целиком, а как раз E и N по отдельности :\ Как мне их определить по публичному ключу?
И последнее, никто не знает наиболее простой реализации RSA под msvc 6.0? Crypto API не предлагать))
Заранее спасибо!
int main(int argc, char* argv[]) {
char *buffer = "hello world!\0";
CRYPT_ALGO_TYPE cryptAlgo = CRYPT_ALGO_RSA;
CRYPT_CONTEXT cryptContext;
CRYPT_KEYSET cryptKeyset;
cryptInit();
cryptCreateContext( &cryptContext, CRYPT_UNUSED, CRYPT_ALGO_RSA );
cryptSetAttributeString( cryptContext, CRYPT_CTXINFO_LABEL,"AAAAAAAAAAAAAA", 14 );
cryptGenerateKey( cryptContext );
printf("buffer: %s\n",buffer);
cryptEncrypt( cryptContext, buffer, strlen(buffer) );
printf("buffer: %s\n",buffer);
cryptEnd();
return 0;
}
на экран выводит:
buffer: hello world!
buffer: hello world!
Есть идеи, почему текст не зашифровывается? :\ Что я не так делаю? Ниодна из функций ошибок не возвращает - проверял.