问题
MariaDB 中是否有 MySQL
RANDOM_BYTES(len)
或 MSSQL CRYPT_GEN_RANDOM(len)
的替代品?
我通读了他们的文档,但我只发现了
rand(len)
,它在生成随机字节方面不具有加密安全性。
问题
根据本文档,当前发布的 MariaDB 版本(10.3)不支持
RANDOM_BYTES(len)
https://mariadb.com/kb/en/library/function-differences- Between-mariadb-103-and-mysql-57/
限制
如果可能,请将代码保留在 MariaDB 中,出于安全原因,我不想依赖 PHP 或任何其他外部函数。
不幸的是,根据与 MariaDB 支持人员的交谈,目前 MariaDB 中没有
RANDOM_BYTES
等效项。请参阅 https://jira.mariadb.org/browse/MDEV-27002 了解与为用户生成随机密码有关的半相关票证。
为了解决这个问题,您可以做的是在 C 中创建一个自定义 UDF(用户定义函数),它利用加密安全库为您拥有的任何用例生成一系列随机字节。从技术上讲,这将代码保留在“MariaDB 内”,尽管您需要编写自己的函数来调用。请参阅 https://mariadb.com/kb/en/creating-user-defined-functions/ 了解更多信息。