我在 php (7.2) 中使用了 sha3 哈希,并且我将继续在 MySQL 中使用它们,但 MySQL 尚不支持它们。
如果我编写自己的 UDF 并调用它,例如 ,sha3
但是将来的某个 MySQL 版本添加了本机sha3
函数,会发生什么?
无论如何,我可能会将其命名为其他名称以避免可能的冲突,但这最终可能发生在任何函数上,所以我当然很好奇。
以防万一有人在 MySQL 中寻找 sha3 支持,我已经编写了一个 MySQL UDF,它使用 rhash 来完全做到这一点,它的功能与本机 sha2 函数完全相同,您可以在此处下载(安装和使用说明在评论中)https://gist.github.com/BrianLeishman/a0f40e7a0a87a7069c5c56a768ff3179
此外,值得注意的是,sha3 应该比 sha2 快(我认为),但我的函数是原生 sha2 的 4 倍(当生成 100,000 个哈希时),但希望未来的原生 sha3 能够解决这个问题。
我添加了一个单独的 UDF 用于返回没有十六进制编码的哈希值unhex_sha3
,它实际上应该充当unhex(sha3(...
,并且这个版本几乎完全是本机速度(与 相比sha2
),因为我可以避免十六进制编码和返回之间毫无意义的转换。
https://gist.github.com/BrianLeishman/d7903a4acba75707c05fc581e1c714c3