Development
從 BigInteger 獲取私鑰
我有一個
BigInteger
代表私鑰的。如何將該私鑰作為 base58 編碼的字元串?以下虛擬碼無法正常工作:base58.encode(bigInt.toByteArray) // yields a string that differs from given bigInt's private key
更新
def fullDoubleSha(bytes: ArrayOfByte) = { val digestSha = MessageDigest getInstance "SHA-256" digestSha digest digestSha.digest(bytes) } def getPrivBytes(key: BigInteger) = key.toByteArray match { case keyBytes => val res = if (keyBytes.head == 0) keyBytes drop 1 else keyBytes new Array(32 - res.length) ++ res } def privBytesToWif(vs: ArrayOfByte) = { val rawPrivKey = Array(0x80.toByte) ++ vs rawPrivKey ++ fullDoubleSha(rawPrivKey).take(4) }
base58 私鑰格式包括基於 SHA256 的校驗和。有關詳細資訊,請參閱此答案(忽略問題中私鑰本身是某些其他數據的 SHA256 雜湊的部分)。