1

I am looking for the differences between the creation of Doge public keys and Bitcoin public keys when inserting a private key.

I am trying to make a small web-app that signs messages. There are a tons of them with bitcoin. They receive a private key and creates the public key from there. When I enter a Doge private key to the input the output is still a Bitcoin public key (Starts with 1 for example instead of D).

2

Dogecoin uses the same public key cryptography ECC with curve secp256k1, so public key generation is the same.

When I enter a Doge private key to the input the output is still a Bitcoin public key (Starts with 1 for example instead of D).

You are confusing addresses with public keys. The 1 or the D is just a prefix to an address, depending on the type of address, see https://en.bitcoin.it/wiki/List_of_address_prefixes

After you generate the public key, you have to do the following in order to get an address:

BASE58CHECK(<address-prefix> HASH160(<pubKey>))

Dogecoin uses different prefixes for the different types of addresses, see https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (note these are for mainnet only):

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,30);  // 0x1e
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,22);  // 0x16
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,158); // 0x9e

Changing the address prefixes should yield compatible addresses.

Not the answer you're looking for? Browse other questions tagged or ask your own question.