2014-09-16 2 views
2

Я использую Raw RSA encryption and decryption. учебник и Raw RSA из вики Crypto ++ для разработки простого кода, который шифрует/дешифрует строку с использованием RSA с использованием Crypto ++.Raw RSA шифрование и дешифрование с использованием Crypto ++

Я использую Visual studio 2010. Код работает без ошибок. Но, я не понимаю, что такое значимое значение n, e, d? Почему я не могу его изменить?

Я уважал алгоритм RSA, и я выбрал это значение:

// La clé publique est la paire (e, n) et la clé secrète est d, donc aussi p et q. 
    // p = 3, q = 11, n = 3 x 11, f = (11–1).(3–1) = 20. On choisit d=7 (7 et 20 sont bien premiers entre eux). 
    // e = 3 car e.d= 20 * 1 + 1 

Но всегда у меня есть отладки ошибка: enter image description here enter image description here

Может кто-нибудь мне помочь?

+1

http://stackoverflow.com/a/20114154/179910 охватывает основную идею о том, как работает RSA, и о том, как использовать номера, необходимые для его получения. –

+0

Учебник от JacobHacker просто копирует работу Crypto ++ без атрибуции. Вероятно, вам следует избегать вещей ЯкобаХакера и придерживаться вики Crypto ++. – jww

+0

* «Код работает без ошибок ... Но всегда у меня ошибка отладки» * - ну, что это? Если есть ошибка, отправьте ее с вопросом. – jww

ответ

0
// p = 3, q = 11, n = 3 x 11, f = (11–1).(3–1) = 20. On choisit d=7 
// (7 et 20 sont bien premiers entre eux). 
// e = 3 car e.d= 20 * 1 + 1 

Эти параметры являются искусственно малыми. Наверное, слишком мало.

Одним из свойств RSA является размер сообщения, который должен быть меньше размера модуля. 3x11 = 33, и это 2 (отдайте). Таким образом, ваше сообщение должно быть меньше 5 бит.

Crypto ++ определяет размер сообщений в байтах, а не в битах. Таким образом, вы, вероятно, никогда не сможете зашифровать что-либо по модулю 33.

К сожалению, указанная страница wiki не обсуждает это size_in_bits(message) < size_in_bits(modulus). И я не могу изменить его в данный момент, потому что Crypto ++ нарушен для записи (чтение в порядке).

Кроме того, вот от rsa.cpp:

if (modulusSize < 16) 
    throw InvalidArgument("InvertibleRSAFunction: specified modulus size is too small"); 

Таким образом, вы, вероятно, следует указать модуль, по меньшей мере 2 в размере. 2 - 65536.

Наконец, пока мы не увидим соответствующие части вашей программы и сообщение об ошибке, это просто предположение.

+0

спасибо Я тебя понимаю. Не могли бы вы рассказать, как я могу преобразовать c в char *: CryptoPP :: Integer c = pubKey.ApplyFunction (m); Будет очень приятно, если я закончу свою задачу этой ночью перед сном. – xtensa1408

Смежные вопросы