For fun, I am attempting to generate bitcoin WIF PrivKeys from random binary strings. I have everything figured out except the final step of converting to WIF using base58check encoding.
Here is where I am at:
Step 1) Generated random binary string
0100 0100 1101 0000 0000 1111 0110 1110 1011 0010 1110 0101 0100 1001 0001 1100
1101 0111 1010 1011 0111 1110 0111 0001 1000 0101 1101 1000 0001 1011 0110 0111
1010 0010 0011 1100 0100 1001 1000 0000 1111 0110 0010 1011 0010 1110 1101 0000
1001 0001 0100 1101 0011 0010 1011 0111 1110 1011 0001 1100 0101 0101 1000 0001
Step 2) Converted binary string to hex string
44D00F6EB2E5491CD7AB7E7185D81B67A23C4980F62B2ED0914D32B7EB1C5581
Step 3) Added 0x80 byte to beginning of hexstring
8044D00F6EB2E5491CD7AB7E7185D81B67A23C4980F62B2ED0914D32B7EB1C5581
Step 4) Hashed new hex string to SHA256 encoded string, took result and hashed to a new SHA256 string
2897b55427f86f73136d55c1729cb4ce56d72e40e33baf8ca10e9e02cb963434
Step 5) Took first 4 bytes (checksum) and added them to end of hex string from Step 2
8044D00F6EB2E5491CD7AB7E7185D81B67A23C4980F62B2ED0914D32B7EB1C55812897b554
And this is where I am lost... No matter what information I look up online I can not seem to figure out how to turn the last string into a base58check encoded string to complete the process of turning it into a WIF PrivKey.
Thanks to "TP's Go Bitcoin Tests", I know that the end result should be
5JLbJxi9koHHvyFEAERHLYwG7VxYATnf8YdA9fiC6kXMghkYXpk
But I have no idea nor can I seem to find a clear, coherent explanation of the base58check process that changed my modified hex string to a WIF PrivKey...
To be clear, I want to actually learn how the process works, so please do not just point me at a tool online and say "Just do it here, it is much easier".
Thank you in advance to anyone who can help explain this to me!