А вот если она разная то сервер Telegram может подобрать такую nonce, при которой ключи пользователей совпадут даже при MITM-атаке и никто не будет знать, что его слушают. И даже если nonce совпадает для 2х собеседников сегодня, нет никаких гарантий что nonce будет совпадать завтра, когда в офис Digital Fortress придет АНБ / ФСБ / другая не хорошая организация.
Может подобрать? Если nonce для клиентов — разный, то сервера Telegram и есть MITM, знающий secret_key, иначе ключи на клиентах не совпадут.
P.S. Николай W_K, сорвите покрова: разный был nonce для клиентов или же нет?
Если одинаковый, то какой от него был толк? А если же разный, то, как так вышло, что разработчики «не заметили», что сервер в процессе генерации узнает secret_key и компрометирует DH?
Для перегрузки методов родительских классов «внутри» потомка при множественном наследовании достаточно ввести имена методов родительских классов в class scope класса-потомка.
class Human: public O<Human, Dog>, O<Human, Cat>
{
public:
using O<Human, Dog>::Setlink;
using O<Human, Cat>::Setlink;
};
Я поясню свой вопрос: выбирая наименьшее значение из текущего и следующего приближений, в случае если вы выбираете начальное приближение < sqrt(x), алгоритм вернёт его же после произвольного числа итераций.
Ещё один. С чего вы взяли, что я не знаю как работает оператор sizeof?
Суть моих ответов сводится к тому, что НЕВОЗМОЖНО определить длину строки at compile time, что безуспешно пытается сделать уважаемый Andrey2008. Это можно сделать только at run-time, к примеру, с помощью strlen.
По-моему вы чересчур преисполнены самомнением для человека, который для вычисления длины строки советует использовать макрос
#define STRLEN(s) (sizeof(s)/sizeof(*s) — 1)
Я поясню свои вопросы: (Null Terminator) '\0' — маркер окончания последовательности символов, хранящихся в памяти и составляющих данную строку. Таким образом длину строки, хранящейся в памяти, можно определить как разность смещений начала строки и терминального нуля, относящегося к данной строке.
Для препроцессоров компиляторов C/C++ строка является единым токеном, поэтому невозможно вычислить длину строки at compile time, используя macro expansion trickery.
Как бы я реализовал «вычисление длины пути хорошо»? Пожалуй что так.
// Primary template
template<class T>
class A {};
template<class T1, class T2>
class B {};
// A's partial specialization
template<class T1, class T2>
class A<B<T1, T2> > {};
unsigned long long getNsec(unsigned long long ticks) {
static const unsigned long long _GCD_TPS_NSPS = gcd(NSEC_PER_SECOND, TICKS_PER_SECOND);
return ticks * (NSEC_PER_SECOND / _GCD_TPS_NSPS) / (TICKS_PER_SECOND / _GCD_TPS_NSPS);
};
Стоило, наверное, упомянуть ReLU, и то, что он сильно ускоряет процесс обучения.
Может подобрать? Если nonce для клиентов — разный, то сервера Telegram и есть MITM, знающий secret_key, иначе ключи на клиентах не совпадут.
P.S. Николай W_K, сорвите покрова: разный был nonce для клиентов или же нет?
Если одинаковый, то какой от него был толк? А если же разный, то, как так вышло, что разработчики «не заметили», что сервер в процессе генерации узнает secret_key и компрометирует DH?
Отдельные извинения для Andrey2008! Не сразу обратил внимание, что приведённый макрос предлагается использовать для литералов.
Суть моих ответов сводится к тому, что НЕВОЗМОЖНО определить длину строки at compile time, что безуспешно пытается сделать уважаемый Andrey2008. Это можно сделать только at run-time, к примеру, с помощью strlen.
Для препроцессоров компиляторов C/C++ строка является единым токеном, поэтому невозможно вычислить длину строки at compile time, используя macro expansion trickery.
Как бы я реализовал «вычисление длины пути хорошо»? Пожалуй что так.
Стоит ожидать топика?