Можно ли использовать вывод sha3 в качестве имени файла? - PullRequest
0 голосов
/ 05 декабря 2018
  1. Можно ли использовать вывод sha3 в качестве имени файла?

  2. Вопрос в других терминах: какие символы выводятся в sha3?

  3. В случае, если это зависит от реализации, я использую пакет sha3 npm .

1 Ответ

0 голосов
/ 05 декабря 2018

Краткий ответ

filename в приведенном ниже коде можно безопасно использовать в качестве имени файла, , но учтите, что во многих операционных системах обычно есть максимальная длина имени файла и пути и filename будет 128 символов длиной.

По-быстрому Google, кажется, что максимальная длина файла в Linux равна обычно 255 символов байтов , а максимальная длина пути составляет 4096 символов Windows может быть ограничение максимальной длины пути 260 символов , поэтому обратите внимание.

import { SHA3 } from 'sha3';

const hash = new SHA3(512);

hash.update('foo');
const filename = hash.digest('hex');

Более длинный ответ

Выход SHA-3 составляет 512 бит.Используя пакет, связанный с вопросом, hash.diget() (без аргументов) возвращает Buffer, содержащий 64 элемента * 8 бит на элемент = 512 бит.Если вы вызовете hash.digest('hex'), он вернет шестнадцатеричную строку, состоящую только из символов 0-9 и af, которые все безопасны в имени файла.См. документацию к дайджесту для других выходных форматов.

Обратите внимание, что sha-3 может использоваться с некоторыми длинами вывода, отличными от 512 (224, 256, 384);объяснение будет тем же, но для другого числа.

Конечно, можно добиться большего успеха (сделать более короткое имя файла), но этого достаточно для моих целей.Кроме того, здесь нет ничего специфичного для sha3;любые двоичные данные могут быть закодированы в виде шестнадцатеричной строки, которая может использоваться в качестве имени файла;просто обратите внимание на длину.

...