Перейти к содержанию
    

(A ^ N) mod A = 0

Правильно ли я понимаю, что если любое число A возвести в любую степень N, то модуль (остаток от деления) результата по числу А всегда будет равен нулю ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Freibier сказал:

(A ^ N) mod A = 0

Правильно ли я понимаю, что если любое число A возвести в любую степень N, то модуль (остаток от деления) результата по числу А всегда будет равен нулю ?

Нет. Так будет только если N>=1 и целое, а A != 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, jcxz сказал:

Нет. Так будет только если N>=1 и целое, а A != 0.

Да, забыл написать что A и N простые числа.

Т.е. если A и N простые, то результат будет равен нулю ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно почему у меня возник вопрос:

вот такой алгоритм "рукопожатия"

1.thumb.jpg.2d606662384dc7d6287546662c479ea5.jpg

Т.е. если GENERATOR = MODULUS, то HostInterKey = SlaveInterKey = Key = 0 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Freibier сказал:

Т.е. если GENERATOR = MODULUS, то HostInterKey = SlaveInterKey = Key = 0 ?

Нет конечно. Там из контекста ясно, что '^' - операция ИСКЛЮЧАЮЩЕЕ ИЛИ, а не возведение в степень.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На JS вот такой пример есть

  createHostEncryptionKeys(data) {
    if (this.keys.key === null) {
      this.keys.slaveIntKey = Buffer.from(data).readBigInt64LE()
      this.keys.key = this.keys.slaveIntKey ** this.keys.hostRandom % this.keys.modulusKey
      this.encryptKey = Buffer.concat([int64LE(Buffer.from(this.keys.fixedKey, 'hex').readBigInt64BE()), int64LE(this.keys.key)])

      this.count = 0
      if (this.debug) {
        console.log('AES encrypt key:', chalk.red(`0x${Buffer.from(this.encryptKey).toString('hex')}`))
        console.log('')
        console.log(this.keys)
        console.log('')
      }
    }
  }

там степень.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое возведение числа А в степень N? Это умножение числа A само на себя N раз. 5^4 = 5 * 5 * 5 * 5 = 625. Логично, что этот результат, разделенный на это же A равносилен тому, что один раз не умножить число А. То есть, А^(N-1), при условии, что N - целое положительное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В криптографии как я понимаю возведение в степень идёт по модулю. Т.е. результат не может быть больше модуля. Для этого есть какая то своя математика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, MegaVolt сказал:

В криптографии как я понимаю возведение в степень идёт по модулю. Т.е. результат не может быть больше модуля. Для этого есть какая то своя математика.

Тогда такая операция - необратимая. А значит утверждение:

37 минут назад, EdgeAligned сказал:

Логично, что этот результат, разделенный на это же A равносилен тому, что один раз не умножить число А.

не верно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ведь просто открыть калькулятор и посчитать 🙂

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, jcxz said:

Тогда такая операция - необратимая

Так оно и есть, операции по модулю - необратимые, потому что что 2 mod 10, что 1002 mod 10 - результат "2", и обратно 2 или 1002 не получить.

 

58 minutes ago, EdgeAligned said:

Логично, что этот результат, разделенный на это же A равносилен тому, что один раз не умножить число А.

Это вы пишете про деление. А ТС спрашивает про операцию по модулю - она является не делением, а взятием остатка от деления.

 

3 hours ago, Freibier said:

Правильно ли я понимаю, что если любое число A возвести в любую степень N, то модуль (остаток от деления) результата по числу А всегда будет равен нулю ?

Да, всё верно, с учётом поправки:

3 hours ago, jcxz said:

Нет. Так будет только если N>=1 и целое, а A != 0.

Эти условия в случае криптографии всегда будут истинными.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, engel65536 сказал:

Это вы пишете про деление. А ТС спрашивает про операцию по модулю - она является не делением, а взятием остатка от деления.

Ну так он и будет = 0. Можете проверить. 5*5*5*5 / 5 = 125 ровно, без остатка. При любых положительных целых A и N, поскольку  A^(N-1), и если A целое, то результат так же будет целым.

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, EdgeAligned сказал:

Ну так он и будет = 0. Можете проверить. 5*5*5*5 / 5 = 125 ровно, без остатка

Это частный случай. А в общем случае: x*x*x*x/x == x*x*x - не верно, если операция умножения выполняется по некоторому модулю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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