Перейти к содержимому

Zer0Galaxy

Гуру
  • Публикации

    1 220
  • Зарегистрирован

  • Посещение

  • Победитель дней

    189

Сообщения, опубликованные пользователем Zer0Galaxy


  1. --вычисление закрытой экспотенты с помощью расширенного алгоритма евклида и моих авторских костылей
      while true do --нахрен он нужен, но мало ли
        rsa_d = modular_inversion(rsa_e,rsa_phi)
        local keyTest = keypairTest({rsa_d,rsa_n},{rsa_e,rsa_n},rsa_phi)
        --print(rsa_d,rsa_e,rsa_n,rsa_phi,keyTest)
        if keyTest then
          break
        end
        RSA_init()
        RSA_E_select()
      end

    Я конечно могу ошибаться, но мне всегда казалось, что закрытая экспонента легко вычисляется через открытую экспоненту и функцию Эйлера как

    rsa_d=rsa_e:pow( rsa_phi-1, rsa_phi )

     


  2. 6 часов назад, Totoro сказал:

    Одна из моих собственных идей, как и обещал.

    Идея неплохая. Я как-то пытался в майне что то подобное сделать. Вот только можно ли  ее многопользователиской реализовать? Или только офф-лайн?


  3. Ребят, помогите разобраться с событиями в этой библиотеке. У меня есть программа, которая должна уметь принимать сообщения по модему и писать его в лейбл. Решить ее выходит только с помощью огромного костыля в виде таймера и pullSignal, который просто каждую секунду слушает событие модема и перерисовывает лейбл. При использовании событий почему-то выкидывает или nil, или вообще ничего.

    Просто создаешь объект Event, в обработчик которого вставляешь изменение лейбы:

    function onEvent(receiverAddress, senderAddress, port, distance, message)
      Label1.caption=message
      Label1:redraw()
    end
    
    Event1=Form1:addEvent("modem_message", onEvent)
    

  4. Вроде понял в чем дело. Bigint некорректно выполняет сравнение длинного целого с обычным числом. Например, если сделать так:

    bi=require("bigint")
    a=bi(1)
    =a==1
    

    в результате получим false.

    Вот твоя прога и зацикливается на строке №31, поскольку в строке №26 всегда имеем false.


  5. ...

    Опытным путем установил, что основание системы счисления должно быть порядка 10^7

    В результате получилась вот такая либа. По сути она аналогична метачислам, только целочисленна.

    Но есть одна проблемка: меня одолела лень и деление (а вместе с ним остаток от деления и возведение в степень по модулю) осталось нереализованным.

    Метачисла по прежнему можно складывать, вычитать, умножать и сравнивать как между собой, так и с обычными числами.

    Пример вычисления факториала:

    QKhFiwd.png

    Кто не верит, может проверить на калькуляторе  :)

     

    PS: вот думаю, нужна ли функция генерации случайного метачисла?


  6. Я понимаю, что предложенный алгоритм учебно-тренировочный, но всё же хочу заметить: криптостойкость RSA-алгоритма основана на вычислительной сложности факторизации больших чисел. Другими словами, если взломщику удастся найти делитель числа rsa_n, которое входит в открытый ключ, то и секретный ключ вычислить не составит большого труда. В предложенном варианте реализации используются лишь первые несколько простых чисел, а значит и факторизация выполняется на раз-два. Рассмотри возможность нахождения очень больших простых чисел. Эту задачу мне в свое время не удалось решить.

×
×
  • Создать...