【问题标题】:How are blockchain keypair private keys hidden from miners, and how are they generated in the first place?区块链密钥对私钥是如何对矿工隐藏的,它们是如何生成的?
【发布时间】:2020-01-14 15:03:05
【问题描述】:

我不知道区块链密钥对是如何以编程方式生成的,同样重要的是——他们如何能够使用远程服务器的私钥来验证他们的密钥对——同时保持他们的私钥完全保密。

区块链密钥对是如何生成的,而私钥是如何被远程服务器隐藏起来的,远程服务器能够通过某种类型的签名来验证您的帐户?

公钥是随机散列,私钥是公钥的父散列吗?如果没有,怎么办?它们如何隐藏在目标网络中?

我在我的 IDE 中使用加密引用,但不确定如何在区块链网络中有效地利用它们。

Private Declare Sub MD5Init Lib "cryptdll" (Context As MD5_CTX)
Private Declare Sub MD5Update Lib "cryptdll" (Context As MD5_CTX, ByVal strInput As String, ByVal lLen As Long)
Private Declare Sub MD5Final Lib "cryptdll" (Context As MD5_CTX)

Private Function CalcMD5(sEncryptString As String) As String
    Dim strBuffer As String
    Dim myContext As MD5_CTX
    Dim result As String
    Dim lp As Long
    Dim MD5 As String

    strBuffer = sEncryptString

    MD5Init myContext
    MD5Update myContext, strBuffer, Len(strBuffer)
    MD5Final myContext

    result = StrConv(myContext.digest, vbUnicode)

    For lp = 1 To Len(result)
        CalcMD5 = CalcMD5 & Right("00" & Hex(Asc(Mid(result, lp, 1))), 2)
    Next

End Function

是的,那是 VB Classic。我老了,给我休息一下。

我希望了解密钥对,但实际上我一直不知道它们是如何工作的。

【问题讨论】:

    标签: cryptography blockchain


    【解决方案1】:

    在比特币中,私钥是(或应该)由你的钱包软件随机生成的,理想情况下是使用高熵源离线。

    比特币中使用的密码学是椭圆曲线,特别是secp256k1 曲线。它是asymmetric/public key cryptography 的一种形式,其中私钥是一个非常大的集合中的任何有效值(难以理解,如 10^70),并且可以通过使用 @ 将私钥与曲线的生成点相乘来确定性地计算公钥987654323@.

    私钥用于签署交易(私钥永远不会离开钱包软件,也不会与包括节点在内的任何人共享)。此签名算法称为Elliptic Curve Digital Signature Algorithm (ECDSA)。可以使用数据本身和公钥来验证数据的签名。如果签名验证算法成功,则可以推断出公钥对应的私钥实际上是用来对数据进行签名的,证明私钥的所有者产生了签名。这在比特币中很重要,因为它授权币的所有者使用它们。

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 2021-12-07
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2014-10-11
      • 1970-01-01
      • 2017-03-12
      相关资源
      最近更新 更多