Метод.NET к раунду число до ближайшего несколько из другого числа?

Есть ли способ (однократного) шифрования DES чем-либо с использованием pyca / cryptography?

Да, просто передайте 8-байтовый ключ в cryptography.hazmat.primitives.ciphers.algorithms.TripleDES. При этом будет использоваться один и тот же ключ для каждого преобразования DES в тройном DES.

Triple-DES также известен как DES-EDE для шифрования, дешифрования и затем шифрования. Если вы используете один и тот же ключ для каждого из них, то одна из пар шифрования / дешифрования приведет к функции идентификации, оставив только один шифрованный DES.


Обратите внимание, что не все реализации тройного DES принимают один ключ (так как обычно присутствует один DES), но это делает:

Секретный ключ. Это должно быть в секрете. Либо 64, 128, либо 192 битов. DES использует только 56, 112 или 168 бит ключа, поскольку в каждом компоненте ключа есть байт четности. В некоторых работах говорится, что существует до трех отдельных ключей, каждый из которых имеет длину 56 битов, и их можно просто объединить для получения полного ключа.

, хотя я должен признать, что вам нужно понять, как работает triple-DES, чтобы разобраться в этом тексте.

Отметим также, что реализация DES-EDE для одного DES в настоящее время не оптимизирована, она будет выполнять все три операции, даже если две из них взаимно отменяют друг друга.

12
задан ilitirit 19 December 2008 в 13:27
поделиться

3 ответа

Да, целочисленная арифметика.

К раунду m до следующего несколько n используйте ((m+n-1)/n) *n

11
ответ дан 2 December 2019 в 06:27
поделиться
public static int RoundUp(int num, int multiple)
{
  if (multiple == 0)
    return 0;
  int add = multiple / Math.Abs(multiple);
  return ((num + multiple - add) / multiple)*multiple;
}


static void Main()
{
  Console.WriteLine(RoundUp(5, -2));
  Console.WriteLine(RoundUp(5, 2));
}

/* Output
 * 4
 * 6
*/
7
ответ дан 2 December 2019 в 06:27
поделиться

При использовании большого количества из них на относительно медленной платформе можно устранить умножение при помощи варианта:

t = m + n - 1; возвратитесь (t - (t % n));

Конечно, если можно ограничить Ваш несколько значениями 2^n, затем операция модуля может также быть удержана от использования в пользу ее логического эквивалента (обычно "и").

Кстати, функция "Сводки новостей", проиллюстрированная выше, серьезно испорчена и только округлит в меньшую сторону правильно когда {(m % n) == (n - 1)}; округление в меньшую сторону неявно для целочисленного деления и как таково, не требует компенсации.

1
ответ дан 2 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: