我一直在寻找为HMAC_SHA256算法生成强大的256位/ 32字节对称密钥的方法.我偶然发现了/ proc/sys/kernel/random/uuid文件.
根据man random(4):"只读文件uuid和boot_id包含随机字符串,如6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9.前者是每次读取重新生成的,后者生成一次."
字符串cat /proc/sys/kernel/random/uuid看起来非常适合此目的.我可以删除' - '字符,最后得到32字节的随机性.
这是生成密码强大的密钥材料来源的有效方法吗?
我正在考虑使用Data :: UUID Perl模块生成256位对称密钥,以便与HMAC_SHA256算法一起使用.每个调用应该给我一个128位的唯一字符串,所以我想做类似以下的事情:
use Data::UUID;
my $ug = new Data::UUID;
my $uuid1 = $ug->to_hexstring($ug->create());
my $uuid2 = $ug->to_hexstring($ug->create());
my $256_bit_key = $uuid1 . $uuid2;
这个密钥密码强吗?