Bitcoin Forum
April 25, 2024, 04:25:17 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Générer une clé privé depuis une passphrase  (Read 2057 times)
Pingwi (OP)
Newbie
*
Offline Offline

Activity: 49
Merit: 0


View Profile
December 27, 2014, 09:03:48 AM
 #1

Salut à tous. J'aimerais pouvoir générer une clé privé depuis une passphrase en php.

Je ne suis pas loin du résultat mais quelque caractères sont différent :

Résultat :
Quote
PassPhrase : bonjour
Secret Exponent : 2cb4b1431b84ec15d35ed83bb927e27e8967d75f4bcd9cc4b25c8d879ae23e18
WIF key generer : 5J9yXofbRAnG9sqbaUkjtbfMGGazrzqa7tzvMdaMeMzAedwrJTq
*WIF key Voulu : 5J9yXofbRAnG9sqbaUkjtbfMGGazrzqa7tzvMdaMeMzAedwrDgp

Le code :
Code:
$btc = new BitcoinCrypt;
   
    $chaine = 'bonjour';
   
    $hexadecimal = hash('sha256', $chaine);
    echo 'PassPhrase : '.$chaine.'<br />';
    echo 'Secret Exponent : '.$hexadecimal.'<br>';
    echo 'WIF key generer : '.$btc->privateKeyToWif($hexadecimal).'<br />';
    echo '*WIF key Voulu : 5J9yXofbRAnG9sqbaUkjtbfMGGazrzqa7tzvMdaMeMzAedwrDgp';

Les fonction de la classe qui servent :
Code:
public function privateKeyToWif($pk , $addressversion = '80'){
          $pk = $addressversion . $pk;
          $check = pack("H*", $pk);
          $hash = hash("sha256", hash("sha256", $check, true));
          $checksum = substr($hash, 0, 4);
          $pkWif = strtoupper($pk . $checksum);
          return self::base58Check($pkWif);       
      }
      public function base58Check($pk){
          $check = pack("H*", $pk);
          $hash = hash("sha256", hash("sha256", $check, true));
          $checksum = substr($hash, 0, 4);
          $b58Check = strtoupper($pk . $checksum);
          return self::encodeBase58($b58Check);       
      }
      public function encodeBase58($hex) {
        if (strlen($hex) % 2 != 0) {
          die("encodeBase58: uneven number of hex characters");
        }
        $orighex = $hex;
        $hex = self::decodeHex($hex);
        $return = "";
        while (bccomp($hex, 0) == 1) {
          $dv = (string) bcdiv($hex, "58", 0);
          $rem = (integer) bcmod($hex, "58");
          $hex = $dv;
          $return = $return . self::$base58chars[$rem];
        }
        $return = strrev($return);
   
        //leading zeros
        for ($i = 0; $i < strlen($orighex) && substr($orighex, $i, 2) == "00"; $i += 2) {
          $return = "1" . $return;
        }
        return $return;
      }


Vous voyez la petite différence à la fin de la clé privé (pour infos j'ai tester la passphrase sur brainwallet c'est pour ca que je connais le résultat voulu)
Je ne trouve pas d'où viens ce soucis ??
1714019117
Hero Member
*
Offline Offline

Posts: 1714019117

View Profile Personal Message (Offline)

Ignore
1714019117
Reply with quote  #2

1714019117
Report to moderator
1714019117
Hero Member
*
Offline Offline

Posts: 1714019117

View Profile Personal Message (Offline)

Ignore
1714019117
Reply with quote  #2

1714019117
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714019117
Hero Member
*
Offline Offline

Posts: 1714019117

View Profile Personal Message (Offline)

Ignore
1714019117
Reply with quote  #2

1714019117
Report to moderator
1714019117
Hero Member
*
Offline Offline

Posts: 1714019117

View Profile Personal Message (Offline)

Ignore
1714019117
Reply with quote  #2

1714019117
Report to moderator
1714019117
Hero Member
*
Offline Offline

Posts: 1714019117

View Profile Personal Message (Offline)

Ignore
1714019117
Reply with quote  #2

1714019117
Report to moderator
Pingwi (OP)
Newbie
*
Offline Offline

Activity: 49
Merit: 0


View Profile
December 27, 2014, 10:02:14 AM
 #2

Dsl j'ai poster un peu trop vite.

Le soucis venait du checksum, je prenait les 4 premiers caractères et pas les 4 premiers bytes (erreur tout bête)
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!