Openssl

這些 OpenSSL 命令如何從 ECDSA 密鑰對創建比特幣私鑰/密鑰

  • April 2, 2019

我在網上找到了以下程式碼,顯然它可以工作。但我不明白從創建的 ECDSA 密鑰對中提取與比特幣兼容的私鑰/公鑰的行。

FILE_NAME=$1
PRIVATE_KEY=${FILE_NAME}_private.pem
PUBLIC_KEY=${FILE_NAME}_public.pem
BITCOIN_PRIVATE_KEY=bitcoin_${FILE_NAME}_private.key
BITCOIN_PUBLIC_KEY=bitcoin_${FILE_NAME}_public.key

echo "Generating private key"
openssl ecparam -genkey -name secp256k1 -rand /dev/urandom -out $PRIVATE_KEY

echo "Generating public key"
openssl ec -in $PRIVATE_KEY -pubout -out $PUBLIC_KEY

echo "Generating BitCoin private key"
openssl ec -in $PRIVATE_KEY -outform DER|tail -c +8|head -c 32|xxd -p -c 32 > $BITCOIN_PRIVATE_KEY

echo "Generating BitCoin public key"
openssl ec -in $PRIVATE_KEY -pubout -outform DER|tail -c 65|xxd -p -c 65 > $BITCOIN_PUBLIC_KEY

echo "Files created!"

如果有人可以解釋,那就太好了

比特幣使用 ECDSA,所以 ECDSA 密鑰對也是比特幣密鑰對。

echo "Generating private key"
openssl ecparam -genkey -name secp256k1 -rand /dev/urandom -out $PRIVATE_KEY

這會生成 openssl 使用的 pem 格式的私鑰。

echo "Generating public key"
openssl ec -in $PRIVATE_KEY -pubout -out $PUBLIC_KEY

這會從提供的私鑰(我們剛剛生成)生成公鑰,並將其寫入 pem 格式的文件中。

echo "Generating BitCoin private key"
openssl ec -in $PRIVATE_KEY -outform DER|tail -c +8|head -c 32|xxd -p -c 32 > $BITCOIN_PRIVATE_KEY

這將獲取 pem 格式的私鑰,將其轉換為 DER 格式,並從該格式中提取 32 個字節的私鑰並將其作為十六進製字元串寫入文件。

echo "Generating BitCoin public key"
openssl ec -in $PRIVATE_KEY -pubout -outform DER|tail -c 65|xxd -p -c 65 > $BITCOIN_PUBLIC_KEY

這將獲取 pem 格式的公鑰,將其轉換為 DER 格式,然後從該格式中提取 65 個字節的公鑰並將其作為十六進製字元串寫入文件。

引用自:https://bitcoin.stackexchange.com/questions/59644