gpt4 book ai didi

mysql - 如何通过此代码在 MySQL 触发器中生成超过 6 个字符的随机字母数字?

转载 作者:行者123 更新时间:2023-11-28 23:11:19 24 4
gpt4 key购买 nike

我有一个通过 php 和 html 请求注册的表单。我找到了一个代码,可以为跟踪代码制作 6 个字符的随机字符串,并且不应重复。此代码在插入新行之前位于 mySql 中用户表的触发器中。

如何在 MySQL 触发器中通过这段代码使超过 6 个字符的随机字母数字?

在您看来这段代码是否有用,或者比 php 中的随机字符串代码更好?

你有什么建议?

BEGIN
declare ready int default 0;
declare rnd_str text;

while not ready DO set rnd_str := LOWER(lpad(conv(floor(rand()*pow(36,6)),10, 36), 6, 0));
if not exists (select * from stu where st_trc = rnd_str)
then
set new.trck= rnd_str;
set ready := 1;
end if;
end while;
END

最佳答案

获取 12 个字符的伪随机字符串就像连接两个 6 个字符的伪随机字符串一样简单。

CONCAT(LOWER(lpad(conv(floor(rand()*pow(36,6)),10, 36), 6, 0)),
LOWER(lpad(conv(floor(rand()*pow(36,6)),10, 36), 6, 0)))

我猜你能想出如何生成 18 或 24 个随机字符。 :-)

就密码安全性而言,这和基于 rand() 的 php 字符串生成器都不合格:这些是伪随机数,不是真正的随机数,顽固的攻击者在尝试猜猜他们。 MySQL 没有办法生成密码安全的随机数。 PHP 7 执行:http://php.net/manual/en/function.random-bytes.php

(加密安全随机数是攻击者尽可能难以猜测的数字。伪随机数生成器使用模式,而真正的随机数没有任何模式。因此,伪随机数更容易猜测。有什么危害如果网络罪犯猜出了您的跟踪代码之一,会对您的业务造成影响吗?只有您知道这一点。如果猜测跟踪代码会对您造成伤害,请使用更安全的随机数。)

为了方便起见,在 php 或 MySQL 中生成这些随机字符串就可以了。如果您的随机字符串的相关性是短暂的(例如一两周),则此方法将非常有效。

关于mysql - 如何通过此代码在 MySQL 触发器中生成超过 6 个字符的随机字母数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45899618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com