Могу ли я оптимизировать этот генератор простых чисел? С# [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Могу ли я оптимизировать этот генератор простых чисел? С# [закрыто]

Сообщение Anonymous »


Прошлым летом я учился на курсе криптографии и очень хотел создать свой собственный инструмент шифрования/дешифрования RSA. Но для этого нужны действительно большие простые числа, поэтому я сделал очень грубый генератор простых чисел, основанный на выражении 6n +- 1 = некоторое простое число.

Я чувствую, что эту программу можно оптимизировать дальше, но больше ничего не могу найти в Интернете.

Это мой первоначальный код:

с использованием системы; использование System.Collections.Generic; // **Шифрование RSA** /* Шифрование RSA использует ключи для шифрования и дешифрования информации. Чтобы начать шифрование, мы должны найти два больших простых числа p и q, где p < q. Переменная n = pq. Переменная e — это вторая часть ключа шифрования. 1 < е < фи (n) который можно показать как 1 < е < (p - 1)(q - 1) ПОЭТОМУ наш ключ шифрования: ekey = {e, n}. Чтобы зашифровать само сообщение, нам нужно преобразовать наше сообщение из символов ASCII в двоичные, которые затем можно преобразовать в большое число. В этом случае m будет представлять окончательное число. С полученным числом проделаем следующие операции, используя наш ekey: м^е (мод. п) или м^е % п После выполнения этих операций над номером наше сообщение официально зашифровано. Мы можем сделать еще пару шагов и преобразовать сообщение обратно в двоичные символы, а затем в символы ASCII. Но прежде чем отправить сообщение, вам нужно будет отправить ключ расшифровки, который мы сейчас вычислим. Чтобы создать ключ, вам нужно следовать определенной формуле и найти новую переменную с помощью алгебры. ((Переменная d) * e) mod(phi(n)) = 1 или ((Переменная d) * e) mod((p - 1)(q - 1)) = 1 ПОЭТОМУ наш ключ дешифрования: dkey = {d, n}. Чтобы расшифровать зашифрованное сообщение, нам нужно преобразовать символы ASCII обратно в двоичные, а затем в большие числа, где нам придется применить следующую формулу. м^д мод(п) После расшифровки сообщения вам нужно будет преобразовать большое число в двоичный код, а затем в символы ASCII, и вы получите исходное сообщение! */ Программа общественного класса { общедоступный статический длинный CheckPrime (длинный потенциалPrime) { длинное сравнение = 2; Боул isPrime = правда; в то время как (сравните
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»