如何用区块链进行文件的数字签名?

时间:2017-03-15 17:59:34

标签: python digital-signature blockchain

我的目标是创建一个网站,要求用户登录,上传文档并使用blockchain单点或多个标志)对其进行签名,就像signatura或{ {3}}。

我已经看过这两个网站,并且对它们如何运作有一点了解。但这是我没有得到的技术图片。

因此,作为一个中级python开发,我有一些问题。请回答。

  1. 如果各方成功签署(技术上),则在下载之前将文档上传到我的网站之后的整体流程。

  2. 如何生成私钥和公钥,是否将它们与用户信息一起存储?

  3. 如何与区块链blocksign进行互动。我已经通过api,但没有任何意义。

2 个答案:

答案 0 :(得分:0)

Blockchain上的文档存储可能会影响其性能,因此从可伸缩性的角度来看并不总是这样。因此,最好将文档存储在分散的分布式文件系统(如IPFS(行星际文件系统))中,然后将引用传递给像以太坊这样的区块链平台。在以太坊中,您可以设计和开发具有授权证明类型的一致性算法的多重签名钱包,并调用一系列智能合约,这些合同可以帮助您以安全和可扩展的方式创作,编辑,版本,发布,存档和过期文档方式。希望能帮助到你。如果您需要有关此方法的更多详细信息,请与我们联系。

答案 1 :(得分:0)

Phew,您已经为区块链新手设定了艰巨的目标。不过,这是完全可行的。我将不按顺序回答您的问题,因为这就是代码的流向。

  

如何生成私钥和公钥,我将它们与用户信息一起存储吗?

您不应生成私钥。至少在必要时使用客户端代码生成它们。至于存储,您也不应存储它们。让用户将它们存储在客户端,最好是在带有Metamask之类的API的专用钱包中。

不幸的是,您的帖子暗示您的意思是比特币区块链,我不知道有任何类似的带有比特币API的钱包...如果需要,请使用最安全的可用存储和加密,但无论如何,请不要这样做将私钥发送到服务器。

  

如果各方均成功签署(技术上),则将文档上传到我的网站之后再进行下载之前的总体流程。

好的,让我们逐步进行示例文档签名。

  1. A将文档上传到您的网站。
  2. B用私钥签署文件。
  3. B将签名的文档上传到您的网站。
  4. 您的网站对签名的文档进行哈希处理。
  5. 您的网站广播带有签名文档哈希作为元数据的交易。

现在,让我们说A要验证B是否签署了该文件。

  1. A下载B的签名文档副本。
  2. A对签名文档进行哈希处理,并将其与您提供的哈希进行比较。
  3. A检查区块链中包含文档哈希的交易。

如果所有三个步骤均成功,则现在可以确定A在交易被包含在区块中的那一刻B就在文档上签名了。

  

如何与区块链api进行交互。我已经通过了api,但是对我来说没有任何意义。

普通的blockchain.com API不适合此用例。您对事务的内容没有足够好的控制,而嵌入文件哈希值是必需的。

我建议您使用python-bitcoinlibbitcoinlib-js之类的库来创建事务,并使用RPC到节点与区块链进行交互。