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

时间:2018-12-05 03:04:55

标签: javascript node.js cryptography sha-3

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

  2. 换句话说,sha3输出中的字符是什么?

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

1 个答案:

答案 0 :(得分:1)

简短回答

下方代码中的

filename可以安全地用作文件名,但请注意,在许多操作系统中,文件名和路径通常具有最大长度和{{1 }}的长度为 128个字符

通过一个快速的google,似乎 Linux 上的最大文件长度通常是 255个字符字节,并且最大路径长度为 4096个字符。在 Windows 上,最大路径长度仍可能限制为 260个字符,因此请注意。

filename

更长的答案

SHA-3的输出为512位。使用问题中链接的包,import { SHA3 } from 'sha3'; const hash = new SHA3(512); hash.update('foo'); const filename = hash.digest('hex'); (不带参数)将返回一个hash.diget(),其中包含64个元素*每个元素8位= 512位。如果调用Buffer,它将返回一个十六进制字符串,该字符串仅由字符0-9和a-f组成,它们在文件名中都是安全的。有关其他输出格式,请参见digest's documentation

请注意,sha-3可以使用某些输出长度,而不是512(224、256、384);解释将是相同的,只是数字不同。

当然,可以做得更好(使用较短的文件名),但这足以满足我的目的。另外,这里实际上没有sha3特定的内容。任何二进制数据都可以编码为可以用作文件名的十六进制字符串;只要注意长度即可。