python - 如何使用区 block 链对文档进行数字签名?

标签 python digital-signature blockchain

我的目标是创建一个要求用户登录、上传文档并使用 blockchain 签名的网站(单符号或多符号)就像signaturablocksign .

这两个网站我都看过,对它们的工作原理略有了解。但这是我没有得到的技术图片。

所以作为中级python开发,我有一些问题。请回答。

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

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

  3. 如何与区 block 链交互api .我已经通过了 api,但对我来说没有任何意义。

最佳答案

呸,你为区 block 链新手设定了一个艰巨的目标。不过,这是非常可行的。我将不按顺序回答您的问题,因为代码就是这样流动的。

How to generate private and public keys and Will I store them alongside user information?

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

不幸的是,你的帖子暗示你指的是比特币区 block 链,我不知道有任何类似的带有比特币 API 的钱包......如果必须,请使用最安全的可用存储和加密,但无论你做什么,都不要将私钥发送到服务器。

Overall flow from after uploading a document to my website before downloading if successfully signed by all parties (Technically).

好的,让我们一步一步地按照示例文档签名。

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

现在假设 A 想要验证 B 是否签署了文档。

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

如果所有三个步骤都成功,A 现在可以确定 B 在交易被包含在一个 block 中的前后签署了文档。

How to interact to blockchain api. I already gone through the api but nothing make sense to me.

普通的 blockchain.com API 不适合这个用例。您对嵌入文档哈希所需的交易内容没有足够好的控制。

我建议您使用类似 python-bitcoinlib 的库或 bitcoinlib-js创建交易,并使用 RPC 到节点,与区 block 链交互。

关于python - 如何使用区 block 链对文档进行数字签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817330/

相关文章:

python - 如何打印带有索引的列表中的元素?

python - 开始使用 Python 进行安全的 AWS CloudFront 流传输

Python:如何优化

c++ - 如何使用 C++ 中的 openssl 库验证自签名证书?

javascript - 确保 JavaScript 未被篡改

node.js - 使用nodejs HFC提交调用交易后如何获取交易uuid

python - Django - get_queryset() 缺少 1 个必需的位置参数 : 'request'

security - 为什么要通过 SSL 对 http 请求进行数字签名

ide - 开发 Solidity 的最佳 IDE/插件

Python Web3 Ganache - BuildTransaction 上的回溯错误