sha3 输出可以用作文件名吗?
换个说法的问题:sha3 输出中的字符是什么?
如果这是特定于实现的,我使用的是sha3 npm package。
问问题
124 次
1 回答
1
简短的回答
filename
在下面的代码中可以安全地用作文件名,但请注意,在许多操作系统中,文件名和路径的最大长度通常为filename
128个字符。
通过快速谷歌,似乎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 回答