stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 21, 2019, 03:46:50 PM |
|
Есть код у Casascius на python что генерирует мини-ключи вот с wiki https://en.bitcoin.it/wiki/Mini_private_key_formatimport random import hashlib
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def Candidate(): """ Generate a random, well-formed mini private key. """ return('%s%s' % ('S', ''.join( [BASE58[ random.randrange(0,len(BASE58)) ] for i in range(29)])))
def GenerateKeys(numKeys = 10): """ Generate mini private keys and output the mini key as well as the full private key. numKeys is The number of keys to generate, and """ keysGenerated = 0 totalCandidates = 0 while keysGenerated < numKeys: try: cand = Candidate() # Do typo check t = '%s?' % cand # Take one round of SHA256 candHash = hashlib.sha256(t).digest() # Check if the first eight bits of the hash are 0 if candHash[0] == '\x00': privateKey = GetPrivateKey(cand) print('\n%s\nSHA256( ): %s\nsha256(?): %s' % (cand, privateKey, candHash.encode('hex_codec'))) if CheckShortKey(cand): print('Validated.') else: print('Invalid!') keysGenerated += 1 totalCandidates += 1 except KeyboardInterrupt: break print('\n%s: %i\n%s: %i\n%s: %.1f' % ('Keys Generated', keysGenerated, 'Total Candidates', totalCandidates, 'Reject Percentage', 100*(1.0-keysGenerated/float(totalCandidates))))
def GetPrivateKey(shortKey): """ Returns the hexadecimal representation of the private key corresponding to the given short key. """ if CheckShortKey(shortKey): return hashlib.sha256(shortKey).hexdigest() else: print('Typo detected in private key!') return None
def CheckShortKey(shortKey): """ Checks for typos in the short key. """ if len(shortKey) != 30: return False t = '%s?' % shortKey tHash = hashlib.sha256(t).digest() # Check to see that first byte is \x00 if tHash[0] == '\x00': return True return False
Если его запустить мы получаем:SKhHHQLDkHsAniFW2MRyVw9jwDDkKx SHA256( ): ae172028e80ef37d3e01906ccd05441946c3efa9e4532ab20f5a6e25ce293840 sha256(?): 0057497a02482464d757500773d3d2c26badbcd94d5081d1cff9ea7c16fd2175 Validated. Скажите как получить ещё и адресс при генерацииSKhHHQLDkHsAniFW2MRyVw9jwDDkKx SHA256( ): ae172028e80ef37d3e01906ccd05441946c3efa9e4532ab20f5a6e25ce293840 sha256(?): 0057497a02482464d757500773d3d2c26badbcd94d5081d1cff9ea7c16fd2175 Address: 17bYqJpPz3huoXuz6Dx6iLejuAHA2k2q3HValidated. ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ![Huh](https://bitcointalk.org/Smileys/default/huh.gif) ПОМОГИТЕ ПОЖАЛУЙСТА МУЖИКИ допилить скрипт что бы и адрес выдавал того приват ключа что оно сгенерировало
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2323
Merit: 2351
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 21, 2019, 05:35:07 PM |
|
Вам точно нужно генерировать приватные ключи в формате мини-ключей - древнем, никем не поддерживаемом формате?
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 21, 2019, 05:42:11 PM |
|
Вам точно нужно генерировать приватные ключи в формате мини-ключей - древнем, никем не поддерживаемом формате?
Да, было бы здорово если бы вы мне помогли со скриптом.... Очень прошу вас
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2323
Merit: 2351
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 21, 2019, 07:08:31 PM |
|
Уж не знаю, зачем вам эти мини-ключи понадобились, но держите: import random import hashlib import codecs import ecdsa
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def Candidate(): """ Generate a random, well-formed mini private key. """ return('%s%s' % ('S', ''.join( [BASE58[ random.randrange(0,len(BASE58)) ] for i in range(29)])))
def GenerateKeys(numKeys = 10): """ Generate mini private keys and output the mini key as well as the full private key. numKeys is The number of keys to generate, and """ keysGenerated = 0 totalCandidates = 0 while keysGenerated < numKeys: try: cand = Candidate() # Do typo check t = '%s?' % cand # Take one round of SHA256 candHash = hashlib.sha256(t).digest() # Check if the first eight bits of the hash are 0 if candHash[0] == '\x00': privateKey = GetPrivateKey(cand) print('\n%s\nSHA256( ): %s\nsha256(?): %s\nUncompressed address: %s\nCompressed address: %s' % (cand, privateKey, candHash.encode('hex_codec'), generate_address(privateKey), generate_compressed_address(privateKey))) if CheckShortKey(cand): print('Validated.') else: print('Invalid!') keysGenerated += 1 totalCandidates += 1 except KeyboardInterrupt: break print('\n%s: %i\n%s: %i\n%s: %.1f' % ('Keys Generated', keysGenerated, 'Total Candidates', totalCandidates, 'Reject Percentage', 100*(1.0-keysGenerated/float(totalCandidates))))
def GetPrivateKey(shortKey): """ Returns the hexadecimal representation of the private key corresponding to the given short key. """ if CheckShortKey(shortKey): return hashlib.sha256(shortKey).hexdigest() else: print('Typo detected in private key!') return None
def CheckShortKey(shortKey): """ Checks for typos in the short key. """ if len(shortKey) != 30: return False t = '%s?' % shortKey tHash = hashlib.sha256(t).digest() # Check to see that first byte is \x00 if tHash[0] == '\x00': return True return False def generate_address(private_key): public_key = __private_to_public(private_key) address = __public_to_address(public_key) return address
def generate_compressed_address(private_key): public_key = __private_to_compressed_public(private_key) address = __public_to_address(public_key) return address
def __private_to_public(private_key): private_key_bytes = codecs.decode(private_key, 'hex') # Get ECDSA public key key = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1).verifying_key key_bytes = key.to_string() key_hex = codecs.encode(key_bytes, 'hex') # Add bitcoin byte bitcoin_byte = b'04' public_key = bitcoin_byte + key_hex return public_key def __private_to_compressed_public(private_key): private_hex = codecs.decode(private_key, 'hex') # Get ECDSA public key key = ecdsa.SigningKey.from_string(private_hex, curve=ecdsa.SECP256k1).verifying_key key_bytes = key.to_string() key_hex = codecs.encode(key_bytes, 'hex') # Get X from the key (first half) key_string = key_hex.decode('utf-8') half_len = len(key_hex) // 2 key_half = key_hex[:half_len] # Add bitcoin byte: 0x02 if the last digit is even, 0x03 if the last digit is odd last_byte = int(key_string[-1], 16) bitcoin_byte = b'02' if last_byte % 2 == 0 else b'03' public_key = bitcoin_byte + key_half return public_key def __public_to_address(public_key): public_key_bytes = codecs.decode(public_key, 'hex') # Run SHA256 for the public key sha256_bpk = hashlib.sha256(public_key_bytes) sha256_bpk_digest = sha256_bpk.digest() # Run ripemd160 for the SHA256 ripemd160_bpk = hashlib.new('ripemd160') ripemd160_bpk.update(sha256_bpk_digest) ripemd160_bpk_digest = ripemd160_bpk.digest() ripemd160_bpk_hex = codecs.encode(ripemd160_bpk_digest, 'hex') # Add network byte network_byte = b'00' network_bitcoin_public_key = network_byte + ripemd160_bpk_hex network_bitcoin_public_key_bytes = codecs.decode(network_bitcoin_public_key, 'hex') # Double SHA256 to get checksum sha256_nbpk = hashlib.sha256(network_bitcoin_public_key_bytes) sha256_nbpk_digest = sha256_nbpk.digest() sha256_2_nbpk = hashlib.sha256(sha256_nbpk_digest) sha256_2_nbpk_digest = sha256_2_nbpk.digest() sha256_2_hex = codecs.encode(sha256_2_nbpk_digest, 'hex') checksum = sha256_2_hex[:8] # Concatenate public key and checksum to get the address address_hex = (network_bitcoin_public_key + checksum).decode('utf-8') wallet = base58(address_hex) return wallet
def base58(address_hex): alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' b58_string = '' # Get the number of leading zeros and convert hex to decimal leading_zeros = len(address_hex) - len(address_hex.lstrip('0')) # Convert hex to decimal address_int = int(address_hex, 16) # Append digits to the start of string while address_int > 0: digit = address_int % 58 digit_char = alphabet[digit] b58_string = digit_char + b58_string address_int //= 58 # Add '1' for each 2 leading zeros ones = leading_zeros // 2 for one in range(ones): b58_string = '1' + b58_string return b58_string GenerateKeys()
Код взят отсюда.
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 21, 2019, 08:48:58 PM |
|
Уж не знаю, зачем вам эти мини-ключи понадобились, но держите: import random import hashlib import codecs import ecdsa
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def Candidate(): """ Generate a random, well-formed mini private key. """ return('%s%s' % ('S', ''.join( [BASE58[ random.randrange(0,len(BASE58)) ] for i in range(29)])))
def GenerateKeys(numKeys = 10): """ Generate mini private keys and output the mini key as well as the full private key. numKeys is The number of keys to generate, and """ keysGenerated = 0 totalCandidates = 0 while keysGenerated < numKeys: try: cand = Candidate() # Do typo check t = '%s?' % cand # Take one round of SHA256 candHash = hashlib.sha256(t).digest() # Check if the first eight bits of the hash are 0 if candHash[0] == '\x00': privateKey = GetPrivateKey(cand) print('\n%s\nSHA256( ): %s\nsha256(?): %s\nUncompressed address: %s\nCompressed address: %s' % (cand, privateKey, candHash.encode('hex_codec'), generate_address(privateKey), generate_compressed_address(privateKey))) if CheckShortKey(cand): print('Validated.') else: print('Invalid!') keysGenerated += 1 totalCandidates += 1 except KeyboardInterrupt: break print('\n%s: %i\n%s: %i\n%s: %.1f' % ('Keys Generated', keysGenerated, 'Total Candidates', totalCandidates, 'Reject Percentage', 100*(1.0-keysGenerated/float(totalCandidates))))
def GetPrivateKey(shortKey): """ Returns the hexadecimal representation of the private key corresponding to the given short key. """ if CheckShortKey(shortKey): return hashlib.sha256(shortKey).hexdigest() else: print('Typo detected in private key!') return None
def CheckShortKey(shortKey): """ Checks for typos in the short key. """ if len(shortKey) != 30: return False t = '%s?' % shortKey tHash = hashlib.sha256(t).digest() # Check to see that first byte is \x00 if tHash[0] == '\x00': return True return False def generate_address(private_key): public_key = __private_to_public(private_key) address = __public_to_address(public_key) return address
def generate_compressed_address(private_key): public_key = __private_to_compressed_public(private_key) address = __public_to_address(public_key) return address
def __private_to_public(private_key): private_key_bytes = codecs.decode(private_key, 'hex') # Get ECDSA public key key = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1).verifying_key key_bytes = key.to_string() key_hex = codecs.encode(key_bytes, 'hex') # Add bitcoin byte bitcoin_byte = b'04' public_key = bitcoin_byte + key_hex return public_key def __private_to_compressed_public(private_key): private_hex = codecs.decode(private_key, 'hex') # Get ECDSA public key key = ecdsa.SigningKey.from_string(private_hex, curve=ecdsa.SECP256k1).verifying_key key_bytes = key.to_string() key_hex = codecs.encode(key_bytes, 'hex') # Get X from the key (first half) key_string = key_hex.decode('utf-8') half_len = len(key_hex) // 2 key_half = key_hex[:half_len] # Add bitcoin byte: 0x02 if the last digit is even, 0x03 if the last digit is odd last_byte = int(key_string[-1], 16) bitcoin_byte = b'02' if last_byte % 2 == 0 else b'03' public_key = bitcoin_byte + key_half return public_key def __public_to_address(public_key): public_key_bytes = codecs.decode(public_key, 'hex') # Run SHA256 for the public key sha256_bpk = hashlib.sha256(public_key_bytes) sha256_bpk_digest = sha256_bpk.digest() # Run ripemd160 for the SHA256 ripemd160_bpk = hashlib.new('ripemd160') ripemd160_bpk.update(sha256_bpk_digest) ripemd160_bpk_digest = ripemd160_bpk.digest() ripemd160_bpk_hex = codecs.encode(ripemd160_bpk_digest, 'hex') # Add network byte network_byte = b'00' network_bitcoin_public_key = network_byte + ripemd160_bpk_hex network_bitcoin_public_key_bytes = codecs.decode(network_bitcoin_public_key, 'hex') # Double SHA256 to get checksum sha256_nbpk = hashlib.sha256(network_bitcoin_public_key_bytes) sha256_nbpk_digest = sha256_nbpk.digest() sha256_2_nbpk = hashlib.sha256(sha256_nbpk_digest) sha256_2_nbpk_digest = sha256_2_nbpk.digest() sha256_2_hex = codecs.encode(sha256_2_nbpk_digest, 'hex') checksum = sha256_2_hex[:8] # Concatenate public key and checksum to get the address address_hex = (network_bitcoin_public_key + checksum).decode('utf-8') wallet = base58(address_hex) return wallet
def base58(address_hex): alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' b58_string = '' # Get the number of leading zeros and convert hex to decimal leading_zeros = len(address_hex) - len(address_hex.lstrip('0')) # Convert hex to decimal address_int = int(address_hex, 16) # Append digits to the start of string while address_int > 0: digit = address_int % 58 digit_char = alphabet[digit] b58_string = digit_char + b58_string address_int //= 58 # Add '1' for each 2 leading zeros ones = leading_zeros // 2 for one in range(ones): b58_string = '1' + b58_string return b58_string GenerateKeys()
Код взят отсюда. спасибо большое дай Бог вам здоровья! Скажите есть ещё варианты генерации? просто если запустить скрипт тот что я дал с википедии то выходит 1 миллион записей в 4 минуты а скрипт что вы дали выше за несколько часов только справится с 1 миллионом
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2323
Merit: 2351
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 22, 2019, 10:09:08 AM |
|
просто если запустить скрипт тот что я дал с википедии то выходит 1 миллион записей в 4 минуты а скрипт что вы дали выше за несколько часов только справится с 1 миллионом
Для получения адреса из приватного ключа требуется выполнить три криптографических операции. Не удивительно, что программа значительно замедлилась. Скажите есть ещё варианты генерации?
Если бы вы сформулировали задачу, а главное - цель, в более общем виде, варианты (может быть!) бы нашлись.
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 22, 2019, 11:05:22 AM |
|
вот смотрите https://github.com/samrushing/paper_keyпросто скрипт что я сейчас вам отправил выше делает все шустро не смотря на свои криптографические вычисления так же получает и приват ключ и адрес обычный генератор на выходе получаем: private: L3rx4SDmX3kY4P8B1KngkzdS9qmWZbNoRS8u34dNkhZqeJsUPkE1 public: 1GvzcndBngkUo35GjQs5MVysVEVtP2t2X за 4 минуты на этом скрипте я получаю таких строк как выше 1 миллион есть одно но он генерирует рандомно а мне нужно от мини-кеев ( по правилу миникеев ) SKhHHQLDkHsAniFW2MRyVw9jwDDkKx если бы можно было как то добавить в этот скрипт что по ссылке генерацию мини-кеев и от них получать так SKhHHQLDkHsAniFW2MRyVw9jwDDkKx private: L3rx4SDmX3kY4P8B1KngkzdS9qmWZbNoRS8u34dNkhZqeJsUPkE1 public: 1GvzcndBngkUo35GjQs5MVysVEVtP2t2X было бы то что я и пытаюсь получить (нужна скорость)
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2323
Merit: 2351
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 22, 2019, 02:45:59 PM |
|
нужна скорость
Если требуется быстрый подбор приватных ключей для заранее известного списка адресов, тогда нужно привести вашу задачу к виду, пригодному для работы с BitCrack. Если стоит какая-то другая задача, тогда возникают дополнительные вопросы: Список мини-ключей у вас уже готовый в файле или вы его генерируете случайным образом на лету? Что вы делаете с полученным списком адресов? Проверяете его на вхождение в какой-то другой список адресов? есть одно но он генерирует рандомно а мне нужно от мини-кеев ( по правилу миникеев ) Но ведь мини-ключи в скрипте, который я редактировал, тоже генерируются случайным образом. Случайно сгенерированные мини-ключи в формате Base-58 преобразуются при помощи операции хеширования SHA-256 в 256-битное число, которое и является приватным ключом. Так не проще ли сразу перебирать 256-битное число? Проблема в том, что вы показываете только середину вашей задачи, не показывая при этом её начало - исходные данные и конечную цель.
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 22, 2019, 03:40:00 PM Last edit: February 22, 2019, 04:08:23 PM by stalker00075 |
|
Ваш код что вы мне дали все прекрасно делает, просто по скорости генерации очень долго. Можно ли изменить ваш код так что бы все так же генерировался кодом миникеем только в этом скрипте https://github.com/samrushing/paper_key пускай даже я не увижу приват ключ hex но там же дается приват ключ wif + Address и очень быстро все это делает (подчеркиваю требуется на основе мини-ключа)
|
|
|
|
amaclin1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 22, 2019, 08:59:34 PM |
|
Ваш код что вы мне дали все прекрасно делает, просто по скорости генерации очень долго. Ну дык, ускоряйте. Вам котлету разжевали и в рот положили, а вы уж и глотать не хотите. Хотя, я подозреваю, что тут особо не ускоришь из-за условия if candHash[0] == '\x00':В питоне я не особо силен и правила миникеев не изучал, но вроде бы понятно, что не случайный набор может являться миникеем, а только один из 256 - вот такое ограничение. А для чего вам скорость? Хотите перебрать все миникеи брутфорсом? Любопытная задумка, а сколько там диапазон перебора? зы. CheckShortKey можно выкинуть?
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 10:15:33 AM |
|
зы. CheckShortKey можно выкинуть?
можно, но скорость это не прибавляет
|
|
|
|
amaclin1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 10:41:34 AM |
|
можно, но скорость это не прибавляет Я же объяснил вам, почему эта программа в 256+ раз медленнее работает, чем просто печать случайных приватных ключей. Мало скорости? Возьмите компьютер помощнее или несколько компьютеров. Перебирать рандомом 58 29 вариантов - это мощно задвинуто. Внушает.
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 11:00:34 AM |
|
можно, но скорость это не прибавляет Я же объяснил вам, почему эта программа в 256+ раз медленнее работает, чем просто печать случайных приватных ключей. Мало скорости? Возьмите компьютер помощнее или несколько компьютеров. Перебирать рандомом 58 29 вариантов - это мощно задвинуто. Внушает. тогда чего если просто использовать это скрипт без генерации адреса выходит очень быстро? а точнее за 11 минут 1 миллион вариантов SKhHHQLDkHsAniFW2MRyVw9jwDDkKx SHA256( ): ae172028e80ef37d3e01906ccd05441946c3efa9e4532ab20f5a6e25ce293840 sha256(?): 0057497a02482464d757500773d3d2c26badbcd94d5081d1cff9ea7c16fd2175 Validated import random import hashlib
BASE58 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def Candidate(): """ Generate a random, well-formed mini private key. """ return('%s%s' % ('S', ''.join( [BASE58[ random.randrange(0,len(BASE58)) ] for i in range(29)])))
def GenerateKeys(numKeys = 10): """ Generate mini private keys and output the mini key as well as the full private key. numKeys is The number of keys to generate, and """ keysGenerated = 0 totalCandidates = 0 while keysGenerated < numKeys: try: cand = Candidate() # Do typo check t = '%s?' % cand # Take one round of SHA256 candHash = hashlib.sha256(t).digest() # Check if the first eight bits of the hash are 0 if candHash[0] == '\x00': privateKey = GetPrivateKey(cand) print('\n%s\nSHA256( ): %s\nsha256(?): %s' % (cand, privateKey, candHash.encode('hex_codec'))) if CheckShortKey(cand): print('Validated.') else: print('Invalid!') keysGenerated += 1 totalCandidates += 1 except KeyboardInterrupt: break print('\n%s: %i\n%s: %i\n%s: %.1f' % ('Keys Generated', keysGenerated, 'Total Candidates', totalCandidates, 'Reject Percentage', 100*(1.0-keysGenerated/float(totalCandidates))))
def GetPrivateKey(shortKey): """ Returns the hexadecimal representation of the private key corresponding to the given short key. """ if CheckShortKey(shortKey): return hashlib.sha256(shortKey).hexdigest() else: print('Typo detected in private key!') return None
def CheckShortKey(shortKey): """ Checks for typos in the short key. """ if len(shortKey) != 30: return False t = '%s?' % shortKey tHash = hashlib.sha256(t).digest() # Check to see that first byte is \x00 if tHash[0] == '\x00': return True return False
|
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 12:10:30 PM |
|
вам мало? оставьте на ночь скрипт работать. Объясняю 1 миллион за 4 минуты генерирует скрипт что я скинул вверху (без адреса) SKhHHQLDkHsAniFW2MRyVw9jwDDkKx SHA256( ): ae172028e80ef37d3e01906ccd05441946c3efa9e4532ab20f5a6e25ce293840 sha256(?): 0057497a02482464d757500773d3d2c26badbcd94d5081d1cff9ea7c16fd2175 Validated. а мне требуется что бы и адрес генерировался. Мне и скинули вариант (за что спасибо большое что потратили время на меня) но он медленно делает все тоже самое + адрес и выходит 100к около 3 часов ( это очень долго) SKhHHQLDkHsAniFW2MRyVw9jwDDkKx SHA256( ): ae172028e80ef37d3e01906ccd05441946c3efa9e4532ab20f5a6e25ce293840 sha256(?): 0057497a02482464d757500773d3d2c26badbcd94d5081d1cff9ea7c16fd2175 Address: 17bYqJpPz3huoXuz6Dx6iLejuAHA2k2q3H по этому я нашел на github вариант https://github.com/samrushing/paper_key который генерирует (не приват hex (просто кажись не выводит в лог) но мне без разницы можно и wif) private: L3rx4SDmX3kY4P8B1KngkzdS9qmWZbNoRS8u34dNkhZqeJsUPkE1 public: 1GvzcndBngkUo35GjQs5MVysVEVtP2t2X по скорости генерации выходит так же за около 4 минут 1 миллион вариантов! но тут рандом не тот что в скрипте миникей он другой ( там правило из 30 символов где первая идет буква S и в конце идет вопрос(?) получается хеш если в хеше идут первые два 00 тогда миникей удался и получается миникей По этому и прошу можно ли изменить это скрипт https://github.com/samrushing/paper_key поменяв рандомную генерацию стандартную на генерацию миниключей тогда возможно получится и скорость выше (раз оба скрипта по отдельности показываю высокую скорость)
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 12:28:06 PM |
|
Тогда можете помочь допустим я возьму тот скрипт что сгенерирует мне 1 миллион миникеев хороших за 4 минуты
положу в блокнот
как мне их шустро проверить на адрес что бы получить миникей = адрес допустим натыкался я на brainwallet скрипты (они конечно не брались с блокнота это я уже подключал сторонние программы + батник) туда по сути могу пихать свои миникеи и получать желанное Но опять же упираюсь во время 120 тыс проверяю за 1-2 часа
|
|
|
|
amaclin1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 12:47:49 PM |
|
Ну если тормозит генерация адреса - можно попробовать функции генерации адреса перетащить из одного скрипта в другой. Там, похоже, разные библиотеки используются.
|
|
|
|
stalker00075 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 02:43:58 PM |
|
Ну если тормозит генерация адреса - можно попробовать функции генерации адреса перетащить из одного скрипта в другой. Там, похоже, разные библиотеки используются.
Если будет время можете попробовать перетащить с одного скрипта в другой пожалуйста
|
|
|
|
amaclin1
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 23, 2019, 04:31:38 PM |
|
Если будет время можете попробовать перетащить с одного скрипта в другой пожалуйста Я могу приблизительно понимать что написано в программе на питоне. Но я не программирую на питоне. И стараюсь бесплатно давать советы. А не делать чью-то работу.
|
|
|
|
n00by
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 172
Merit: 11
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 26, 2019, 07:47:45 AM |
|
Тогда можете помочь допустим я возьму тот скрипт что сгенерирует мне 1 миллион миникеев хороших за 4 минуты
положу в блокнот
как мне их шустро проверить на адрес что бы получить миникей = адрес допустим натыкался я на brainwallet скрипты (они конечно не брались с блокнота это я уже подключал сторонние программы + батник) туда по сути могу пихать свои миникеи и получать желанное Но опять же упираюсь во время 120 тыс проверяю за 1-2 часа
Тут очень много нужно переписывать вообще. Скрипты из интернета иногда пишут любители. Начнем с того, что вы в консоль их выводите - это самое большое время занимает. Все операции IO это просто уйма тактов процессора. После того как вы находите minikey нужный (в случае с генерацией адреса) происходят еще операции: - вы повторно берете sha256 от найденного значения (в функции GetPrivateKey), таким образом находите приватный ключ. - для нахождения публичного ключа вы используете небыструю библиотеку python'a ecdsa - после нахождения пубкея вы опять делаете 2 хеширования sha256 и одно hash160. - после этого результат преобразуется в формат base58check. Все эти операции выполняются на питоне довольно долго (при вызове неоптимизированным кодом). Так что либо прокачивать скилы питониста, либо использовать другие инструменты.
|
|
|
|
|