Начальная производительность и надежность от urandom

#!/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 — это инструмент для работы, но я не знаю, как я отношусь к tr -dc '0-9' сразу после того, как вытащу из него 4k элементов. это делает так, что мне приходится сбрасывать 16 вместо 32, что я бы предпочел. потому что иногда просто не хватает номеров для выбора.

чтобы быть ясным, я хотел бы достичь следующих ограничений:

  • head -c 4096 как максимальный пул из urandom во время одной команды
  • seed1, seed2 должны быть последовательностью из 32 целых чисел от 0 до 9 как можно более случайными.
  • если возможно, хотел бы надежно увеличить кратность до 32 (никогда не может быть начального числа меньше 32 символов)
  • тянуть меньше из urandom нормально. если энтропия сохраняется.
  • другие предложения в порядке, если и только если энтропия увеличивается

Как я уже говорил, tr -dc '0-9' кажется неряшливым. и, если возможно, есть ли способ увеличить количество байтов, которые я использую из urandom (в настоящее время просто фильтрую все, что еще не является int).

это работает, но я чувствую, что должен быть лучший способ. кто-нибудь свежим взглядом увидит что-то, что я упускаю?


person Nalaurien    schedule 07.06.2017    source источник


Ответы (1)


как насчет добавления | od -An -tx8 между head и tr для преобразования вывода в шестнадцатеричный формат, чтобы вероятность появления 0-9 была выше.

person Nahuel Fouilleul    schedule 07.06.2017
comment
ха-ха, это не так уж плохо, не могу поверить, что я не подумал об этом. Сила свежих глаз. я оставлю это на пару часов, посмотрю, есть ли какие-либо другие предложения, а затем отмечу :) - person Nalaurien; 07.06.2017