Partage
  • Partager sur Facebook
  • Partager sur Twitter

priv key base58

Sujet résolu
    16 juillet 2021 à 12:13:56

    Bonjour à vous !
    Je cherche à faire un clé privée. J'ai donc lu une documentation pour avoir une clé privée. Il y a 7 étapes, j'en suis justement à l'étape 7. De l'étape 1 à 6, je n'ai aucun problème, les étapes de la documentation sont justes et sont pareilles que les miennes. Mais à l'étape 7 je trouve quelque chose de différent.

    J'obtiens donc à la fin de l'étape 6, l'hex suivant correspondant à ma clé privée : 800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d
    L'étape 7 consiste à encoder l'hex de l'étape 6 (800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d) en base58.
    Moi j'ai fais une fonction base58 et hexToText que j'attacherais, évidemment.
    J'encode en base58 l'hex de l'étape 6, j'obtiens : Dim4hhs65k2E2dcuRCrp6BY842ya48ioCfuYRB9PYvDjZEBT3kQkfp8
    L'encode en base58 de l'hex de l'étape 6 sur la documentation : 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

    L'hex de l'étape 6 est pourtant égal à celle de la doc.
    Voici les fichiers cpp permettant de créer la clé privée.

    PrivateKey.cpp
    https://pastebin.com/zznQdu8q

    Base58.cpp
    https://pastebin.com/XDD6mk2w


    En espérant que vous puissiez m'aider à ce sujet afin que la clé privée finale de la documentation soit la même que la mienne, bien cordialement.



    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2021 à 14:20:47

      Bonjour, merci de votre réponse, j'ai bien sûr suivi les recommandations que vous avez donné.
      J'ai l'impression qu'il y a une conversion implicite. Genre une transformation possible des caractères s'ils ne sont pas tous convertibles, car bon lorsque je fais le hexToString(hexa), bah ça me sort pas "Hello", ça me sort un des caractères incompréhensibles.

      Mais je ne sais pas comment remédier à cette conversion implicite :/.

      Bien Cordialement.
      • Partager sur Facebook
      • Partager sur Twitter
        26 juillet 2021 à 17:05:18

        Salut...
        Après de nombreux essaies (ça m'a rendu fou, je préviens :p), j'ai enfin trouvé la solution :lol:.
        Après 10 jours xD.

        Alors en fait, j'ai un peu edit ma fonction base58. Comme ceci :
        std::string base58::Base58Encode(const std::vector<uint8_t>& data)
        {
            CodecMapping mapping(AlphaMap, Base58Map);
            std::vector<uint8_t> digits((data.size() * 138 / 100) + 1);
            size_t digitslen = 1;
            for (size_t i = 0; i < data.size(); i++)
            {
                uint32_t carry = static_cast<uint32_t>(data[i]);
                for (size_t j = 0; j < digitslen; j++)
                {
                  carry = carry + static_cast<uint32_t>(digits[j] << 8);
                  digits[j] = static_cast<uint8_t>(carry % 58);
                  carry /= 58;
                }
                for (; carry; carry /= 58)
                  digits[digitslen++] = static_cast<uint8_t>(carry % 58);
            }
              std::string result;
              for (size_t i = 0; i < (data.size() - 1) && !data[i]; i++)
                result.push_back(mapping.BaseMapping[0]);
              for (size_t i = 0; i < digitslen; i++)
                result.push_back(mapping.BaseMapping[digits[digitslen - 1 - i]]);
              return result;
        }
        Comme cela, je peux directement passer en paramètre mon vecteur de bits. Comme ça, ça fonctionnera.
        Je fais un petit essaie comme ceci :
            base58 hexFormatTest;
            std::vector<uint8_t> test {
                { 0x80, 0x5b, 0x8d, 0x0c, 0x4a, 0xaa, 0xa0, 0xdd, 0x5f, 0xf8, 0x56, 0x50, 0x6c, 0xbe, 0x1e, 0x97, 0xd9, 0x22, 0xad, 0xeb, 0x21, 0x42, 0x9f, 0x29, 0x4b, 0xfe, 0xe1, 0xfc, 0x50, 0xa4, 0xec, 0x97, 0xdf, 0x84, 0x91, 0xf0, 0x2d }
            };
            qDebug() << hexFormatTest.Base58Encode(test).c_str();
        Et j'obtiens donc la bonne version ^^ comme ceci : 5JWc8PHwaZRXoojksYRpt4qQxqSWe1HnDJ2DxS1Sc7TncZhJVba.
        Du coup, puisque je suis devenu fou avec ce problème, qui est désormais réglé, je vais profiter pleinement de mes vacances restantes.

        Cordialement.

        • Partager sur Facebook
        • Partager sur Twitter

        priv key base58

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown