UUID是否足够随机用于密码恢复链接?

时间:2014-08-08 11:44:40

标签: perl security uuid

Data::UUID会生成安全随机序列吗?是否可以使用它来生成密码恢复链接? 例如:

use Data::UUID;
my $u = Data::UUID->new;
my $uuid = $u->create_from_name_str(NameSpace_URL, 'www.example.com');
#then add $uuid to db
#and send email to user

2 个答案:

答案 0 :(得分:1)

我个人使用UUID::Tiny,因为它能够生成更随机的版本4 UUID。但是,在任何一种情况下,模块都只使用Perl的rand函数,这对于严重的加密工作来说不够随意。

尽管如此,对于典型的密码恢复电子邮件来说,这可能是随机的。特别是如果密码恢复链接仅保持工作24小时,并在此之后停止工作。

这实际上取决于你所拥有的东西。它是一个发布穿着超级英雄服装的宠物照片的论坛,还是核发射代码?如果您认为您的网站可能成为犯罪分子的目标,那么选择更强大的东西可能是明智的。

可以使用以下方法生成具有低冲突概率的相当好的随机字符串:

use Crypt::PRNG;
my $string = sprintf(
    q/%08x%s/,
    time(),
    Crypt::PRNG->new->bytes_hex(24),
);

答案 1 :(得分:1)

Data :: UUID可以生成version 1create)或version 3create_from_name)UUID。这些都不是随机的。版本1是您的MAC地址加上时间戳,版本3是您传入的字符串的MD5哈希值。