Код:
импорт случайных
импорт hashlib
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
Защиту кандидат ():
"""
Создание случайного, хорошо сформированной мини закрытого ключа.
"""
возвращать ( '% S% S' (% 'S', '' .join (
[BASE58 [random.randrange (0, длина (BASE58))] для г в диапазоне (29)])))
Защиту GenerateKeys (numKeys = 10):
"""
Генерация мини закрытых ключей и выход мини-ключ, а также полный
закрытый ключ. numKeys этого количество ключей для генерации и
"""
keysGenerated = 0
totalCandidates = 0
в то время как keysGenerated < numKeys:
пытаться:
= кандидат канд ()
# Выполните проверку опечаток
Т = '% s? % плавиковый шпат
# Возьмите один раунд SHA256
candHash = hashlib.sha256 (т) .digest ()
# Убедитесь, что первые восемь бит хэша равны 0
если candHash [0] == '\ x00':
PrivateKey = GetPrivateKey (плавиковый шпат)
печать ( '\ N% S \ nSHA256 ():% s \ nsha256 ():% s' %
(Плавиковый шпат, PrivateKey, candHash.encode ( 'hex_codec')))
если CheckShortKey (плавиковый шпат):
печать ( 'Утвержденные'.)
еще:
печать ( 'Invalid!')
keysGenerated + 1 =
totalCandidates + 1 =
кроме KeyboardInterrupt:
ломать
печать ( '\ п% s:% г \ п% s:% г \ п% s:% .1f' %
( 'Ключи Сформирован', keysGenerated,
'Всего кандидатов', totalCandidates,
«Отклонение в процентах»,
100 * (1,0-keysGenerated / поплавок (totalCandidates))))
Защиту GetPrivateKey (shortKey):
"""
Возвращает шестнадцатеричное представление закрытого ключа, соответствующего
для данного короткого ключа.
"""
если CheckShortKey (shortKey):
Возвращение hashlib.sha256 (shortKey) .hexdigest ()
еще:
печать ( "Опечатка обнаружена закрытый ключ!)
возвращения None
Защиту CheckShortKey (shortKey):
"""
Проверяет наличие опечаток в короткий ключ.
"""
если Len (shortKey) = 30:
вернуться Ложные
Т = '% s? % shortKey
Тхач = hashlib.sha256 (т) .digest ()
# Убедитесь, что первый байт \ x00
если Тхач [0] == '\ x00':
возвращающие
вернуться Ложные
импорт hashlib
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
Защиту кандидат ():
"""
Создание случайного, хорошо сформированной мини закрытого ключа.
"""
возвращать ( '% S% S' (% 'S', '' .join (
[BASE58 [random.randrange (0, длина (BASE58))] для г в диапазоне (29)])))
Защиту GenerateKeys (numKeys = 10):
"""
Генерация мини закрытых ключей и выход мини-ключ, а также полный
закрытый ключ. numKeys этого количество ключей для генерации и
"""
keysGenerated = 0
totalCandidates = 0
в то время как keysGenerated < numKeys:
пытаться:
= кандидат канд ()
# Выполните проверку опечаток
Т = '% s? % плавиковый шпат
# Возьмите один раунд SHA256
candHash = hashlib.sha256 (т) .digest ()
# Убедитесь, что первые восемь бит хэша равны 0
если candHash [0] == '\ x00':
PrivateKey = GetPrivateKey (плавиковый шпат)
печать ( '\ N% S \ nSHA256 ():% s \ nsha256 ():% s' %
(Плавиковый шпат, PrivateKey, candHash.encode ( 'hex_codec')))
если CheckShortKey (плавиковый шпат):
печать ( 'Утвержденные'.)
еще:
печать ( 'Invalid!')
keysGenerated + 1 =
totalCandidates + 1 =
кроме KeyboardInterrupt:
ломать
печать ( '\ п% s:% г \ п% s:% г \ п% s:% .1f' %
( 'Ключи Сформирован', keysGenerated,
'Всего кандидатов', totalCandidates,
«Отклонение в процентах»,
100 * (1,0-keysGenerated / поплавок (totalCandidates))))
Защиту GetPrivateKey (shortKey):
"""
Возвращает шестнадцатеричное представление закрытого ключа, соответствующего
для данного короткого ключа.
"""
если CheckShortKey (shortKey):
Возвращение hashlib.sha256 (shortKey) .hexdigest ()
еще:
печать ( "Опечатка обнаружена закрытый ключ!)
возвращения None
Защиту CheckShortKey (shortKey):
"""
Проверяет наличие опечаток в короткий ключ.
"""
если Len (shortKey) = 30:
вернуться Ложные
Т = '% s? % shortKey
Тхач = hashlib.sha256 (т) .digest ()
# Убедитесь, что первый байт \ x00
если Тхач [0] == '\ x00':
возвращающие
вернуться Ложные