Восстановление последних нескольких цифр приватного ключа Litecoin

Можно ли восстановить последние несколько потерянных цифр (10) приватного ключа моего кошелька Litecoin? Существуют ли какие-либо инструменты восстановления? Или мне придется попробовать и свернуть свой собственный? Важно, против какой криптографической функции я буду работать?

Я понимаю, что верхнее/нижнее буквенно-цифровое пространство ключей из 10 символов фактически невозможно взломать, но этот ключ был в формате импорта кошелька, который, как я понимаю, включает в себя некоторую избыточность/обнаружение ошибок а-ля проверка номера кредитной карты MOD10. Мне интересно, можно ли восстановить 10 символов потерянного закрытого ключа в разумные сроки.

Предыстория: когда я поспешно «сохранил» свою пару ключей liteaddress.org в формате PDF с помощью Chrome, 10 символов закрытого ключа были обрезаны. На самом деле оказалось, что 15 или около того отсутствующих символов были обрезаны, но инструмент восстановления PDF обнаружил некоторые из скрытых символов. Я не заметил этого в то время, и заплатил в кошелек.

Мой потерянный кошелек содержит доходы от большей части моего майнинга на сегодняшний день. Деньги не большие, но тратить их впустую жалко.

Я понимаю, что все это звучит крайне хитроумно. В подтверждение того факта, что я пытаюсь восстановить свой собственный ключ, а не чужой, я рад использовать свое настоящее имя / основной профиль Stack Exchange, чтобы задать этот вопрос.

Я только что потратил полтора часа, пытаясь восстановить закрытый ключ с обрезанного адреса. Я сдался в отчаянии. Если вам удалось восстановить ключ, пожалуйста, объясните шаги, которые вы предприняли для этого! Это может помочь: LiteAddress , WIF wiki (добавить 0xB0 вместо 0x80 для Litecoin), Base58Check Encoder wiki , Base58Check encoder , преобразователь чисел

Ответы (1)

Прежде всего: я не знаю никаких инструментов восстановления (но и не искал их в Google). Я объясню, как трудно угадать правильный адрес.

Формат импорта кошелька имеет 4 байта данных контрольной суммы. Это 8 символов. Таким образом, потеря последних 4 байтов или их части только лишает/уменьшает вашу способность проверять наличие ошибок ввода в важной части экземпляра формата импорта кошелька.

8 символов в base58 (это то, что использует формат импорта кошелька) — это log_2 (58 ^ 8) бит = 46,86 бит. Вычтите из этого 4 байта избыточных данных, и вы знаете, что вам нужно угадать 14,86 бита (в идеале (не получится)). Таким образом, после 2 ^ 14,86 = 29 738 догадок у вас есть это точно, а стохастическое ожидание составляет 14 869 догадок. Это вполне осуществимо (даже не идеализировано).

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

Если вам это нужно в формате импорта кошелька, после вашего предположения вы должны хешировать расширенный ключ с помощью sha256, взять первые 4 байта (8 символов в шестнадцатеричном представлении, опять же) и добавить их к расширенному ключу.

Но есть классы, которые дают вам открытый ключ, если вы вводите закрытый ключ. И у тебя почти получилось. Вы, вероятно, также получили соответствующий открытый ключ. Поэтому вам нужно написать сценарий, который пробует все возможные закрытые ключи, вычисляет для них открытые ключи и сравнивает их с открытым ключом, который вы вводите в сценарий. Это, вероятно, намного быстрее, чем выяснять, есть ли средства в кошельке.