证明一个文件当前存在而不披露其内容。

cotar的Python项目详细描述


共同

科塔里允许你证明你有一个文件,而不释放它。

动机

下面的场景描述了这个简单工具的动机: 爱丽丝想用的一种想法;通过在文章或论文中发表或在产品中使用。但她需要帮助,所以她请鲍勃和她合作。不过,爱丽丝的主意太好了,她担心鲍勃会从她那里偷来这个主意而不把她牵扯进来。

为了解决这个问题,她需要先证明自己有这个想法,但还没有向公众公布。所以她写了一份简单的想法草稿,包括所有重要的成分,计算出这个文档的加密散列,并将文档存储在一个安全的地方。在和鲍勃谈话之前,她先把杂碎出版。由于H是单向的,她的想法仍然是安全的。

如果bob未经alice的同意而试图使用她的想法,她可以在稍后的阶段将文档d发布给全世界。因为每个人都可以检查她以前发布的hashH(d)是否属于文档,所以她现在在与bob交谈之前已经证明了文档中的想法。

cotary(代码公证)使alice的这个过程非常简单。只需对文件执行cotary,它就会在您的twitter帐户上发布一个加密的安全散列。这个带有时间戳和散列的tweet证明您在发布时拥有该文件。

这展示了一个very哈希函数的简单用例以及如何在实践中使用它们。

安装

科塔里目前只支持Python3。不支持python2。因此,请确保在python3环境中使用pip;有时称为pip3。在某些系统上,python3可执行文件被称为python3,而不是python。在这些情况下,您可以使用python3 -m pip,而不只是调用pip,以确保您拥有正确的版本。

从PYPI安装

cotary是available on PyPI所以使用pip安装非常简单:

确保您有适合python3环境的pip installed

$ python3 -m pip install --user cotary

省略--user以在系统范围内安装它。

现在,cotary可执行文件应该在您的路径中并准备好使用。

从源安装

pip也可以用于从源代码安装。setup.py文件包含pip需要知道的所有信息,因此您可以轻松地安装源的本地副本:

确保您有适合python3环境的pip installed

$ python3 -m pip install --user .

省略--user以在系统范围内安装它。

现在,cotary可执行文件应该在您的路径中并准备好使用。

配置

twitterapi的配置是使用yaml配置文件完成的。 目前,这些是选择。默认配置文件在~/.config/cotary/config.yaml中。

twitter:message:'Iownafilewithchecksum{checksum}(cotary)'# The following are twitter API keys. Get them from https://dev.twitter.com/appsconsumer:key:nullsecret:nullaccess_token:key:nullsecret:null

用法

usage: cotary [-h] [-c] [--config [CONFIG]] [-q] [file]

Publish the checksum of a file on Twitter.

positional arguments:
  file               File for which to publish checksum. If none is given,
                     read from stdin

optional arguments:
  -h, --help         show this help message and exit
  -c, --calc_only    Only calculate and print the checksum, do not publish it
  --config [CONFIG]  Use given config instead of ~/.local/cotary/config.yaml
  -q, --quiet        Do not print any messages

示例

$ cotary README.md 
checksum: openssl_sha256:66ca5ae6f1f3760ad7258cc1d1e906ec8853a0e4da2b2de42f55036cffe8f8a2
Status published at 2019-01-16 15:18:38

导致此Twitter消息:

I own a file with checksum openssl_sha256:66ca5ae6f1f3760ad7258cc1d1e906ec8853a0e4da2b2de42f55036cffe8f8a2 (cotary)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尽管有nosandbox选项,java Chromedriver不会以root用户身份运行   调用rest API时发生java Getting resource not available错误   java Tomcat6如何选择部署WAR文件的顺序   java如何绑定swing。JTextArea到PrintStream以接受数据   java在Apache Camel reout中设置ReplyToQMgr和ReplyToQ,以使用IBM MQ接收COA   java异常意外标记:SMALLINT;自动递增主键时   使用Geotools创建Google地图覆盖的java   java增强for循环在尝试调用引发异常的方法时未执行   使用JMS和Spring进行java测试   扩展ListView二进制XML行0时发生java错误#   java什么情况会导致线程从等待队列转移到阻塞队列?   java何时在安卓中使用parcelable?   安卓 java。lang.RuntimeException:使用Facebook登录时传递结果ResultInfo失败   java通过AsyncTask Android在循环中执行方法?   用于格式化XML/XSLT的java Eclipse插件   java如何修复蛙跳赋值中浮点到整数的不正确舍入?   java在GenericObject池中创建对象   公共静态main上的java变体(字符串args[]