Здравствуй,
Согласно вики:
Почти каждое 256-битное число является действительным закрытым ключом. В частности, любые 256-битное число между 0x1 и 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 является действительным закрытым ключом.
Диапазон допустимых закрытых ключей определяется secp256k1 стандартом ECDSA используется Bitcoin.
Итак, как бы один идти о генерации случайного секретного ключа? Я просто использовать некоторый генератор случайных чисел или хэш некоторого текста (в случае ключей мозга бумажника), убедитесь, что он вписывается в диапазоне, и если он делает, это хорошо. Если нет, то сделать новую случайную одно, или, если это хэш, увеличивает случайное слово для этого хэша. Затем проверьте, чтобы убедиться, что он вписывается в диапазон. Повторяйте, пока вы не получите хороший закрытый ключ.
Для случайно сгенерированных ключей, я понимаю, что с помощью регулярных PRNGs не является хорошей идеей, но используется вместе с SHA256, наряду с другими входами (время? Движений мыши? Клавиатуры синхронизации записей, или даже то, что на самом деле типизированных, внешние файлы, которые вы что никто другой не имеет, или внешние файлы, которые генерируются случайным образом доверенного ПСЧ), это может быть "приемлемо",
Я мог бы также использовать OpenSSL ГСЧ, но это может быть более сложным.
Оттуда, это вопрос, следуя логике, чтобы создать WIF закрытый ключ, открытый ключ, и, чтобы сделать их с помощью сжатого флага.
В качестве личного проекта, я хотел бы создать программу, которая делает это в основном (Visual Basic или питания Basic) для Windows. Я знаю, и я видел, есть версии C для Linux и предварительно скомпилированных двоичных файлов для Windows (vanitygen) и даже Java (bitaddress, brainwallet).