种子性能和可靠性来自urandom

时间:2017-06-07 06:45:11

标签: bash performance random entropy

#!/bin/bash

seed1=0
seed2=0

while [[ "$seed1" == 0 || "$seed2" == 0 ]]; do
    seed1=$(head -c 4096 /dev/urandom | tr -dc '0-9' | fold -w 16 | head -n 1)
    seed2=$(head -c 4096 /dev/urandom | tr -dc '0-9' | fold -w 16 | head -n 1)
done

seed_array=($seed1 $seed2)
seed_array=($(echo ${seed_array[*]}| tr " " "\n" | sort -n))

salt_num=[some function id rather not reveal] < /dev/urandom
echo $(echo [seed and salt go here in some order id rather not say] | sha256sum | awk '{print $1}')

我正在为我想要放在一起的其他东西创造种子和盐,这是一个肮脏的版本。现在,我喜欢它开始工作的方式,因为我在这里得到了很多非常好的随机性。但我需要在这里争取最高的熵。我认为urandom是这项工作的工具,但在我从中拉出4k项后,我不知道我对tr -dc '0-9'的感受。它使得我必须折叠16而不是32,这是我更喜欢的。因为有时候,没有足够的数字可供选择。

要明确,我想实现以下约束:

  • head -c 4096作为任何一个命令期间来自urandom的最大拉力
  • seed1,seed2应该是一系列32个整数0-9尽可能随机
  • 如果可能的话,想要可靠地将折叠增加到32(在字符数为32的情况下永远不会有种子)
  • 从urandom中拉得更少很好。如果保留熵。
  • 当且仅当熵增加时,其他建议才可以

就像我之前说过的那样,tr -dc '0-9'只是觉得草率。如果可能的话,有没有办法增加我从urandom中使用的字节数(目前基本上只是过滤掉任何不是int的东西)。

它有效,但我觉得必须有更好的方法。有一双新鲜眼睛的人会看到我失踪的东西吗?

1 个答案:

答案 0 :(得分:1)

如何在PHP Recoverable fatal error: Object of class stdClass could not be converted to string in this line $header .= mysqli_fetch_field_direct($export,$i) . "\t"; | od -An -tx8之间添加head以将输出转换为十六进制,以便更有可能发生0-9。