Ответы пользователя по тегу Криптография
  • Как создать публичный сертификат RSA?

    @Sumor
    Ну если вы хотите просто поиграться, то просто возводите ваше "сообщение", которое должно быть меньше чем модуль, в степень экспоненты по модулю и получаете зашифрованный текст. Только шифрование, в случае использования модуля до 2^32, будет хуже чем простая замена на int. И вы не сможете передать сообщения, которые располагаются от модуля до int.MaxInt.
    Есть несколько библиотек в открытом доступе для работы с RSA на node.js. Например, https://github.com/rzcoder/node-rsa
    Ответ написан
    Комментировать
  • Для каких элементов существует обратный элемент(метод Хилла)?

    @Sumor
    Вам необходимо изучить/прочитать основы алгебры конечных множеств и линейной алгебры.
    Вкратце примерно так:
    Если мощность множества символов равна простому числу, то обратный элемент есть у всех элементов кроме нуля.
    Если мощность множества символов равна степени простого числа (например, 2^5), то можно определить операцию умножения таким образом, чтобы также у каждого ненулевого элемента был обратный элемент.
    Для всех остальных случаев действительно обратный элемент есть только только у элементов, которые взаимно простые с мощностью множества.
    Достаточно просто показать, что если элемент a имеет общие множители с m (мощность множества), то:
    a = k*НОД(a,m)
    m = l*НОД(a,m), l < m
    тогда
    a*l = k*l*НОД(a,m) = k*m*НОД(a,m) = 0 (mod m)
    Элемент 0 не имеет обратного, значит и a не имеет обратного.
    Ответ написан
    Комментировать
  • Дешифровка AES?

    @Sumor
    Пока cryptoStream не закончил свою работу считывать данные бессмысленно.
    Правильный вариант шифрования:
    using (var encryptedStream = new MemoryStream())
    {
    	using (var cryptoStream = new CryptoStream(encryptedStream, encryptor, CryptoStreamMode.Write))
    	{
    		cryptoStream.Write(data, 0, data.Length);
    	}
    	return encryptedStream.ToArray();
    }
    Ответ написан
  • Криптоустойчивый поточный шифр?

    @Sumor
    Посмотрите эту статью, может быть это то, что вы ищите
    Лёгкий блочный шифр Speck
    Ответ написан
    Комментировать
  • Нужна хорошая книга по криптографии, какую посоветуете?

    @Sumor
    Жельников В. "Кpиптогpафия от папиpуса до компьютеpа" - для общего понимания, хотя книга немного устарела.
    Для понимания основ ЭЦП и шифрования с открытым ключом статьи Мартина Гарднера 1977 года "Надёжные шифры" и "Надёжные шифры II" из сборника "От мозаик Пенроуза к надежным шифрам" глава 13 и 14
    Ответ написан
    Комментировать
  • Можно ли при ассимметричном шифровании использовать две пары ключей?

    @Sumor
    Нужно понимать, что преподаватель даёт вам материал последовательно, от простого к сложному. Поэтому примеры даны с некоторыми упрощениями. В реальной жизни всё посложнее.
    В примере, предложенном преподавателем предполагается, что генератором ключей для первого и второго пользователя используются одни значения p и q. Например, они генерируют ключи в одном месте, в специальной комнате на специальном компьютере.
    Каждый получил свою пару ключей - e1 и d1 первый, e2 и d2 второй. И разъехались по разным офисам - один на Аляску, другой в Майями.
    Ключи e1 и e2 считаются открытыми и могут быть свободно обменены по любым каналам связи. Открытые ключи вообще могут хранится на какой-либо открытой площадке.
    Поэтому когда первому нужно связаться со вторым, он берёт свой открытый ключ второго из открытых источников. Шифрует сообщение открытым ключом второго - после этого только второй может его прочитать, так как для этого необходим закрытый ключ второго.
    Но второй не будет уверен в личности написавшего. Поэтому зашифрованное сообщение подписывается закрытым ключом первого.
    Сообщение отсылается второму. Второй берёт открытый ключ первого, доступный в открытом доступе и "снимает" подпись. Затем, используя свой закрытый ключ, расшифровывает сообщение. Если после этих процедур он получил осмысленный текст - значит текст был действительно отправлен первым.
    Ответ написан
  • Как выполнить сложение по модулю 2^512?

    @Sumor
    Неизвестно какие возможности вашего языка программирования.
    Можно поизвращаться и переписать код на C без использования сдвига:
    void AddModulo512(const unsigned char *a,const unsigned char *b,unsigned char *c)
    {
    	int i = 0, t = 0;
    	unsigned char * pResult = (unsigned char *)(&t);
    	unsigned char * pNext = pResult + 1;
    
    	for(i=63;i>=0;i--)
    	{
    		t = a[i] + b[i] + *pNext;
    		c[i] = *pResult;
    	}
    }

    Смысл в том, что вы смотрите на число, как на массив из 4 байт. В старшем будет результат сложения двух байт, а во втором байте результат переполнения, который перейдёт на следующий байт результата.
    Есть подозрение, что работа с указателями будет работать медленнее, чем работа с числами. Хотя всё зависит от компилятора.
    Ответ написан
    Комментировать
  • Что это за алгоритм?

    @Sumor
    Нужна дополнительная информация.

    Первое значение повторяется один раз
    000016684862	270391
    000016684862	551062

    Второе значение повторяется 11 раз по два раза и 1 раз три раза
    000015A859D4	107225
    00050091C090	107225
    000015A8B162	117855
    0000163BC57E	117855
    0005008DEFEB	177271
    0000163BEE37	177271
    000015A8E2C9	180954
    000015A83E90	180954
    0000163BB839	190908
    0000163BC9A4	190908
    00050090A2E9	199580
    0000163C08D1	199580
    000015ADA449	229974
    00001667703A	229974
    00050091F9A6		236959
    0005007A2E8F		236959
    0005007A027C	270222
    0000163C262B	270222
    00001648857E	270222
    00050090C005	291448
    0000163BC742	291448
    0005008E2BBE	297563
    000015B523E6	297563
    0005008E53E2	385039
    00050091F990		385039
    Ответ написан
    Комментировать
  • Как сделать хэш строки (sha256 и/или sha512) на Си?

    @Sumor
    Ответ написан
    Комментировать
  • Как обычному среднему пользователю объяснить принцип работы шифрования с открытыми ключами?

    @Sumor
    Обычный почтовый ящик.
    Открытый интерфейс — это щель для конвертов или газет. Любой может оставить сообщение адресату.
    Закрытый интерфейс — это ключ от ящика, которым владелец открывает ящик и достаёт свою корреспонденцию.
    Ответ написан
    Комментировать