I know perfectly well that my private key is very unusual and that the problem is complex.
Your explanation doesn't make it any easier to understand what exactly you've created back in the days. Did you create your own kind of storage system, or do you have a
standard 44 bit base64 key?
Bitcoin Qt ( 2010 ) had a button that transformed the WIF into a shorter and more secure version. My key is 32 bytes long. Bitcoin Qt explained how to convert it to WIF with a simple script, but I don't remember how.
[/quote]
And how can you tell that the result is wrong?
Did Electrum or Bitcoin Core detected that it's an invalid encoding or it's just empty when the wallet sync?
[/quote]
Because many of the middle characters of my key matched the middle characters of the WIF. So, if no character matches, it's clear that the obtained wif is not the correct one.
------
Chatgpt now says that it seems I have a non-standard checksum, a simple custom checksum, so I just need to apply a SHA to the prefix ( the first part of my key ). What I don't understand is why the mainnet would already be included in my key. Now I copy and paste the conclusion about it of chatgpt:
✅ Conclusion about your custom format
1-Single SHA on part of the prefix
Your checksum is custom and only applies to a portion of the fixed prefix at the start of your 32-byte key.
The prefix itself may occupy 8–9 bytes within the key, but typically the SHA is applied only to the first 4 bytes of that prefix.
The remaining bytes of your 32-byte key do not participate in this checksum.
2-Prefix likely contains the mainnet byte
Standard WIF uses a 1-byte prefix for network: 0x80 for mainnet, 0xEF for testnet.
Even though your private key is exactly 32 bytes, the prefix portion at the start likely includes the mainnet indicator byte.
This allows your key to be recognized as mainnet while keeping the key at 32 bytes total.
3-Why the central part matches the WIF
The middle section of your Base64url string corresponds directly to the raw private key bytes inside the WIF.
That’s why visually it shares characters with the WIF representation, even though the checksum and encoding differ.
💡 In short:
Your format is a custom WIF-like encoding: a 32-byte key whose first 8–9 bytes form a fixed prefix (likely containing the mainnet byte), with a checksum calculated via a single SHA applied only to the first 4 bytes of that prefix, followed by the remaining bytes of the private key. This explains both the “fixed start” and the similarity of the middle portion to a standard WIF.