计算字符串的哈希值(MD5 或其他)

计算字符串的哈希值(MD5 或其他)

我正在尝试缓存宏的结果,类似于那个问题,但宏的参数可以包含任意字符,因此不适合放在里面\csname ... \endcsname

所以,我很好奇:肯定有一些 TeX 核心或软件包包含计算哈希、MD5 或其他(我并不关心是哪种)的功能。但是……我找不到它。我从grepTeXlive 树中得到的唯一结果是pdfmdfivesum,但它只适用于文件,而不是字符串。

那么:是否有现成的哈希计算宏/包可用?

答案1

\pdfmdfivesum也适用于任意字符串:

\pdfmdfivesum{Hello World}

结果:

B10A8DB164E0754105B7A99BE72E3FE5

可以解码十六进制字符串以节省空间:

\pdfunescapehex{\pdfmdfivesum{Hello World}}

\pdfmdfivesum是可扩展的,可以在内部使用\edef

\pdfmdfivesumfile仅当给出关键字时才对文件起作用:

\pdfmdfivesum file {<filename>}

包裹pdftexcmds

\pdfmdfivesum在 pdfTeX 中,DVI 和 PDF 两种模式均可用。该包pdftexcmds定义了 LuaTeX 中缺少的 pdfTeX 原语。该包也可在纯 TeX ( \input pdftexcmds.sty) 中使用。命令名称使用前缀\pdf@而不是\pdf

\pdf@mdfivesum{Hello World}

特克斯

  • 旧版本,例如 XeTeX (3.14159265-2.6-0.99992),不支持 MD5 和。
  • \pdffivesumm在 pdfTeX 0.99993 版本左右添加,后来重命名为\mdfivesum。因此,当前版本 (3.14159265-2.6-0.99996) 通过 计算 MD5 和\mdfivesum。还file支持与 pdfTeX 相同的关键字。

相关内容