0
  1. sha3 输出可以用作文件名吗?

  2. 换个说法的问题:sha3 输出中的字符是什么?

  3. 如果这是特定于实现的,我使用的是sha3 npm package

4

1 回答 1

1

简短的回答

filename在下面的代码中可以安全地用作文件名,但请注意,在许多操作系统中,文件名和路径的最大长度通常filename128个字符

通过快速谷歌,似乎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 的内容;任何二进制数据都可以编码为可以用作文件名的十六进制字符串;请注意长度。

于 2018-12-05T03:04:54.797 回答