一个高效、可移植的纠删码工具
项目描述
生成冗余信息块,以便在某些块丢失的情况下,可以从剩余的块中恢复原始数据。此软件包包括命令行工具、C API、Python API 和 Haskell API。
简介和许可协议
此软件包实现了一种“纠删码”或“前向纠错码”。
您可以在 GNU 通用公共许可证(版本 2)或您选择的任何更高版本下使用此软件包。您还可以在传递性宽限期公共许可证(版本 1.0)或您选择的任何更高版本下使用此软件包。(您可以选择在任一许可证的条款下使用此软件包。)有关 GNU 通用公共许可证(版本 2)的条款,请参阅 COPYING.GPL 文件。有关传递性宽限期公共许可证(版本 1.0)的条款,请参阅 COPYING.TGPPL.rst 文件。
纠删码最广为人知的例子是 RAID-5 算法,该算法使得在丢失任何一块硬盘的情况下,存储的数据可以完全恢复。zfec 软件包中的算法具有类似的效果,但它不是从单个元素的丢失中恢复,而是可以参数化以预先选择可以容忍丢失的元素数量。
此软件包主要基于 Luigi Rizzo 等人旧的“fec”库,这是一个成熟且优化的纠删码实现。zfec 软件包对原始“fec”软件包进行了几个更改,包括添加 Python API、重构 C API 以支持零拷贝操作、对核心代码进行了一些清理和优化,以及添加了一个名为“zfec”的命令行工具。
安装
pip安装zfec
要运行自测,请从解包的源树或 git checkout 中执行 tox。
要运行 Haskell API 的测试: cabal run test:tests
社区
目前可以通过以下命令通过 git 在网络上获取源代码
git clone https://github.com/tahoe-lafs/zfec
请将有关 zfec 的信息发布到 Tahoe-LAFS 邮件列表,并贡献补丁
<https://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev>
如果您发现 zfec 中存在错误,请在 github 上创建一个问题
概述
此软件包执行两个操作:编码和解码。编码通过产生额外的“校验块”(也称为“辅助块”)来扩展输入数据的大小。解码通过接收一些数据——原始数据的任何组合块(称为“主块”)和“辅助块”,并生成原始数据。
编码通过两个整数 k 和 m 参数化。m 是产生的块的总数,k 是重建原始数据所需的块数。m 必须至少为 1,最多为 256,k 必须至少为 1,最多为 m。
(请注意,当 k == m 时,执行纠删编码没有意义——它退化成 Unix “split” 工具的等价物,该工具简单地将输入分割成连续的段。同样,当 k == 1 时,它退化成 Unix “cp” 工具的等价物——每个块都是输入数据的完整副本。)
请注意,每个“主块”是原始数据的一个片段,因此其大小是原始数据大小的 1/k,每个“辅助块”大小相同,因此所有块使用的总空间是原始数据大小的 m/k 倍(加上一些填充以使最后一个主块与所有其他块大小相同)。除了块本身包含的数据外,还有一些必要的元数据用于后续重建。这些数据包括:1. K 的值,2. M 的值,3. 每个块的 sharenum,4. 使用的填充字节数。 “zfec” 命令行工具压缩这些数据片段,并将它们添加到每个份额的开头,因此由 “zfec” 命令行工具产生的每个份额文件比单独的份额数据大 1 到 4 字节。)
解码步骤需要输入由编码步骤产生的 k 个块。解码步骤输出的是先前输入到编码步骤的数据。
命令行工具
bin/ 目录包含两个 Unix 风格的命令行工具“zfec”和“zunfec”。执行 zfec --help 或 zunfec --help 以获取使用说明。
性能
要运行基准测试,请使用可选的 –k= 和 –m= 参数执行包含的 bench/bench_zfec.py 脚本。
以下是 i7-12700k 的结果
`测量 K=3, M=10 的数据编码,每次编码 1000000 字节 1000 次... 平均 MB/s: 364 测量 K=3, M=10 的 primary-only 数据解码,每次 1000 次... 平均 MB/s: 1894750 测量 K=3, M=10 的 secondary-only 数据解码,每次 1000 次... 平均 MB/s: 3298 `
这是一篇分析各种纠删码及其实现性能的论文,包括 zfec
http://www.usenix.org/events/fast09/tech/full_papers/plank/plank.pdf
Zfec 在不同机器以及不同的 K 和 M 值下都表现出良好的性能。它还有一个很小的内存占用。
API
每个块都与“blocknum”关联。每个主块的 blocknum 是其索引(从零开始),因此 0’th 块是第一个主块,它是文件的前几个字节,1’st 块是下一个主块,它是文件的下几个字节,依此类推。最后一个主块的 blocknum 是 k-1。每个辅助块的 blocknum 是一个介于 k 和 255(包括)之间的任意整数。(当使用 Python API 时,如果在调用 encode() 时不指定想要哪些辅助块,则默认提供从 k 到 m-1(包括)的块。)
C API
fec_encode() 以输入数组的形式接收 k 个指针,每个指针指向一个包含输入数据(即第 i 个缓冲区包含第 i 个主块)的内存缓冲区。还有一个参数是一个数组,包含要产生的辅助块的 blocknum。 (该数组中的每个元素都是辅助块的 blocknum,即它必须大于等于 k 且小于 m。)
fec_encode() 的输出是请求的辅助块集,这些块被写入调用者提供的输出缓冲区中。
请注意,这个 fec_encode() 是一个“低级”API,因为它要求输入数据以一组恰好大小的内存缓冲区提供。如果您是从包含所有数据的单个缓冲区开始,请参阅 easyfec.py 的“Encoder”类,了解如何将单个大缓冲区拆分为适用于 fec_encode() 的适当输入缓冲区集。如果您是从磁盘上的文件开始,请参阅 filefec.py 的 encode_file_stringy_easyfec(),了解如何从文件中读取数据并将其传递给“Encoder”类。Python 接口提供了这些高级操作,Haskell 接口也是如此。如果您在其他语言中实现了执行这些高级任务的功能,请发送补丁到 tahoe-dev@tahoe-lafs.org,以便您的 API 可以包含在 zfec 的未来版本中。
fec_decode() 接收一个包含 k 个指针的数组,每个指针指向一个包含块的缓冲区。还有一个单独的输入参数,它是包含每个传入块的块号的数组。
fec_decode() 的输出是从输入中缺失并需要重建的主块集合。这些重建的块写入调用者提供的输出缓冲区。
Python API
encode() 和 decode() 接收一个包含 k 个缓冲区的序列,其中“序列”是任何实现 Python 序列协议的对象(例如列表或元组),而“缓冲区”是任何实现 Python 缓冲区协议的对象(例如字符串或数组)。这些缓冲区中需要存在的内容与 C API 相同。
encode() 还接收一个包含期望块号的列表。与 C API 不同,Python API 接受列表中期望的主块号和辅助块号。encode() 返回一个包含请求块的缓冲区对象的列表。对于每个请求的主块,结果列表包含从输入列表中引用的适当主块。对于每个请求的辅助块,列表包含包含该块的新的字符串对象。
decode() 也接收一个表示传入块的块号的整数列表。decode() 返回一个包含所有原始数据主块的缓冲区对象的列表(按顺序)。对于输入列表中存在的每个主块,结果列表简单地包含传入输入列表的对象的引用。对于不在输入列表中的每个主块,结果列表包含包含该主块的新创建的字符串对象。
请注意,可变数据和 Python API 返回输入引用的组合可能导致一个问题。
返回输入引用是高效的,因为它避免了不必要的复制作业,但如果传入的对象是可变的,并且在该对象被 zfec 返回调用后发生更改,那么 zfec 的结果(即对该相同对象的引用)也将被更改。这种微妙之处是您为避免数据复制所付出的代价。如果您不想担心这个问题,则可以使用不可变对象(例如 Python 字符串)来保存传递给 zfec 的数据。
Haskell API
Haskell 代码已经完全 Haddocked,要生成文档,请运行 runhaskell Setup.lhs haddock。
实用工具
filefec.py 模块有一个用于高效读取文件并将其分块编码的实用函数。此模块由 bin/ 目录中的“zfec”和“zunfec”命令行工具使用。
依赖项
需要C编译器。要使用Python API或命令行工具,还需要Python解释器。我们已测试过与Python 2.7、3.5和3.6兼容。对于Haskell接口,需要GHC >= 6.8.1。
致谢
感谢原始fec库的作者Luigi Rizzo,以及为其做出贡献的人:Phil Karn、Robert Morelos-Zaragoza、Hari Thirumoorthy和Dan Rubenstein。感谢Mnet黑客编写了早期的Python包装器,尤其是Myers Carpenter和Hauke Johannknecht。感谢Brian Warner和Amber O’Whielacronx在API、文档、调试、压缩和单元测试方面的帮助。感谢Adam Langley改进C API并贡献Haskell API。感谢GCC(从Richard M. Stallman开始)和Valgrind(从Julian Seward开始)的创造者,他们提供了一对出色的工具。感谢我在Allmydata的同事们——Fabrice Grinda、Peter Secor、Rob Kinninmont、Brian Warner、Zandr Milewski、Justin Boreta、Mark Meras——资助这项工作并在自由软件许可证下发布。感谢Jack Lloyd、Samuel Neves和David-Sarah Hopwood。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪一个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
zfec-1.5.7.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1069857218f8babe4084439712720803a11fe91b14f20bc77a96a4e6f4e1111f |
|
MD5 | bcf82b77def364ed54558886f6777ec7 |
|
BLAKE2b-256 | 14f25e655a102f2c3a24007b73925e2de67ba9efda078beb265993bfcee08c62 |
zfec-1.5.7.4-pp39-pypy39_pp73-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae59b5a49bb5223da7e905a9c8a4bd32ac4cb0c6143ac8c467b48a850d74da9f |
|
MD5 | 265b0a7cedd9c380975eb8797e7d5058 |
|
BLAKE2b-256 | f031a1ba75f74c4522c6f3aba3bbe59c22285eceb6fdaa2877d59388a58d1288 |
zfec-1.5.7.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 132fc86428c699bf02a0d63b2b780583a6a818d3432f7cb313e5ff8303c99205 |
|
MD5 | e8bd8dbde088620c2e4dee4e57592875 |
|
BLAKE2b-256 | 53dc31205271865232b9f1835320ad4a137be9a4d3422c7e1321c06d4ef8c8fa |
zfec-1.5.7.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5c6b2434a57ebb8ed2ce699ae06d2d4b547b91ff54768b63e62719d070441552 |
|
MD5 | eb1f920cb7437101c4e45324bc81babb |
|
BLAKE2b-256 | 065216aaade64cb5e4ba71cc61e69aed4dac74a2a9641f1eeed52e15007f73df |
哈希值 用于 zfec-1.5.7.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c750d8996d94d21a92a649d258a655f8480eb89afabf52c3ec5435fd7851417 |
|
MD5 | e4dda7b8cfa4655cc925a37545a8b47e |
|
BLAKE2b-256 | 5c4d9d7278a530f577752da64e311d29455b86e003530db0dda6cf142c1da86f |
哈希值 用于 zfec-1.5.7.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c01c9d189c99fa65734029e8e4755e8ed3eb9f5f2d345715b945d93b00c117be |
|
MD5 | 88be03ab0744e064efd036d518b51c2e |
|
BLAKE2b-256 | d69580e812f210a6f20b071154f5962a18cb78c981b923e0727383818fe67a43 |
哈希值 用于 zfec-1.5.7.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 28c68b04f5e020ad3d1acb49360b747dea56cf071c6d8ff10ee0710abd3c3145 |
|
MD5 | ca27f5b0f770fa987a948a2246adaf0d |
|
BLAKE2b-256 | ee5c6afc871c21c7ae472c071c184a430d7e24199291baa0316de05d7c337dce |
哈希值 用于 zfec-1.5.7.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 82185a50fd6b6fbd31da09118161f018cf0029c5c4a5d9b6793bbe5390832e40 |
|
MD5 | f9579ae88144db406b82348e1d0bcb3a |
|
BLAKE2b-256 | b19dce462c46d5f66e94872dea3914694bf7ac6eddf035a27bb955c5dae6fad8 |
哈希值 用于 zfec-1.5.7.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 75375359e21329ef31d9df0442cdfe30d9fc5b17f5d169081dd0019c528c6834 |
|
MD5 | 3039863826cb5b087f14f36525cacd0d |
|
BLAKE2b-256 | 37b4b448b2d52a479fb8988bff3e9d091942dc430e76f1970ea66cc53d2be1ff |
哈希值 用于 zfec-1.5.7.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f4f5f16fb5842b2e8622635149e408875ec1b95f87fffa67913537e7d7ed802 |
|
MD5 | 5ae192f5a251810e7c8237791c3fef1d |
|
BLAKE2b-256 | c420ce6e50a83da473c60886e46e55b7deb76978bf48bf51d93561da6285d5ba |
哈希值 用于 zfec-1.5.7.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a58a54193ff7bd17da22538de1286859c84081518436833649fd58e03ba1c8c |
|
MD5 | 42823160d1181dbef2b074fcb54ff755 |
|
BLAKE2b-256 | a5e9b9cd18398c79cf2e3409569e94bf1f7491b29f7fb158a94ea69a974ecb9e |
哈希值 用于 zfec-1.5.7.4-cp312-cp312-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 24f62c5802c9246280126d8ca2e2b63ab8715a5cf2a3ab376312498a07c547ec |
|
MD5 | ce09773a471ba573f3c8c27896d82d16 |
|
BLAKE2b-256 | 95b7df4a9fa216617e26594724d6201752f087fc375b888fb8b779d5870e9bdc |
哈希值 用于 zfec-1.5.7.4-cp312-cp312-musllinux_1_1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5613eb59e38f3d43356bb14eb965f68e9c9c4166c8a9bf53e733603a5189b882 |
|
MD5 | 92493a21baef79a02c72796f8e5900c4 |
|
BLAKE2b-256 | e5e4559fcf00ecdc1bffed01acaa3e6991cdefa4a3f76b65ce4f73a9fcd96098 |
哈希值 for zfec-1.5.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 86ec158ed48d340e56308b9ec80360cb3143714216c7d1b4466aef2ef134011d |
|
MD5 | fd03c2780c8ea6258c0f8725f821dc7e |
|
BLAKE2b-256 | 3f15bda7a6454fa2cf7501330c3d254ff1b01bd4cab34c313dd1a2787040bcc8 |
哈希值 for zfec-1.5.7.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf75b79c69835a2db4fbcaf66eb3e3e3fd2287843ddb226d175ba6f228eac4d4 |
|
MD5 | 0a5d54d3e18bbeaee9f5c27c03526b4b |
|
BLAKE2b-256 | 9e62848e6c7d9da49c475765e22dd261e12463aa461a71139f1df31be32aba08 |
哈希值 for zfec-1.5.7.4-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5fb30a93b45c4ffb732e7db66ce050d2a6155ca715251ef111704e36ef7bb17e |
|
MD5 | 8851dca32be804d5522863b31a887289 |
|
BLAKE2b-256 | 1c37e967a7eebf409891e6dd2c5155d1c950881996fc148d881db2ddb2a4221f |
哈希值 for zfec-1.5.7.4-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cee15f67d902024760c23365ba7b0104e5a16f41ba0349a8e75f1c1b096c8511 |
|
MD5 | 434dd031b310fbad6d3f8277fb55adce |
|
BLAKE2b-256 | ae9e7d371e91ae6ecae536784ca6d3012fceb18fdc382470a5fee1b2087ba8f7 |
哈希值 for zfec-1.5.7.4-cp312-cp312-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88902dde0662ff9a28fb6d8024e9607754de686e39db51a6e92d8638d22699ee |
|
MD5 | 43a7ee2f503f8fc13d688e230b6d8723 |
|
BLAKE2b-256 | 5afc9fa8a13d90eba1a9b5042e250cd836e5247335cad57fc45a1042ae560d84 |
哈希值 for zfec-1.5.7.4-cp311-cp311-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 622ca638451eb48dca338d5af69c1fde3082b79c9f9a468ad69c587893c7a6de |
|
MD5 | 9e2d314f55a2ef698e5a2cce94947195 |
|
BLAKE2b-256 | 8d6165bac9ca53d48185476760d344c690dd56fc933231bc73830e5609b7730f |
哈希值 for zfec-1.5.7.4-cp311-cp311-musllinux_1_1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96dc1a6aba0cfdc86bc6ec8e50bf70a8c5706f2195f517a2ac13a0ba3a91ce64 |
|
MD5 | 14e0daf64e9b1a6f11e4da4323e2abee |
|
BLAKE2b-256 | 33493958ece263f1a9bdd245f4bb301d90829c5d1736511aebbbd1ff3723c4ac |
哈希值 for zfec-1.5.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a40e89c048dcaf8543ee35eda6f116f83e95a526842f18386a4d2901a3d40850 |
|
MD5 | 571611aaa377cd110c897510b6d4ae81 |
|
BLAKE2b-256 | cbc0da958eee4e073f1edf13b8295ccdace079c43fcdf3d1ff892f365317087f |
哈希值 for zfec-1.5.7.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d744e6d1e075af2491281a8af5f441aff2e6fe28835a1e30a76604c2e7a524d |
|
MD5 | 835d054034bc8e49f93932c9ed534e7c |
|
BLAKE2b-256 | 963081546558e24ff985ec4fb1c7d68d01a8e5b83fec8f250f5cd7d5864438c1 |
哈希值 for zfec-1.5.7.4-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31fe44a8bb561a70c471998e5690f78414ac6eb4e7b0f40f60493dfb0dd806cf |
|
MD5 | 2c1716b445a73b5f35fb902ef091d394 |
|
BLAKE2b-256 | f86d8e9bd2063bb6381dcf78e7ab352a16755a48d00767bd4c1ee8e78554961d |
哈希值 for zfec-1.5.7.4-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96da593f37eb95472e2e9cf7acc19270d3af04c7fca9e63dcb3c209ab8c6bb3d |
|
MD5 | 193ffe8755e04b519aa4eb01f162971d |
|
BLAKE2b-256 | 6c839f60d499410e6155b3bd1dd551866d240ab1349e053c4a2b183590b9546d |
哈希值 用于 zfec-1.5.7.4-cp311-cp311-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e73740a59a5be468e79f8df0e49bcadb4a37af0d7b4d4ae817031d6e8870bee2 |
|
MD5 | 8afa27c879ad12af56a249bf255bbafe |
|
BLAKE2b-256 | c8de1ec596a0963c40f3e762d52e5bc2da9ef7cb43122d9c7aaabbcaed968c61 |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7a283f1dedf9b5bf673f826143a575eee1dc39617bd585fac16dfad1327be413 |
|
MD5 | 25277f46cf4eb8e24591ae52a7c4dde1 |
|
BLAKE2b-256 | 4d496511499287c5f0c895a26b249ad580a6162ece9ab94bcb3bd2693907cb3d |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-musllinux_1_1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c463c227e8c203a718507f20d999270e2789e13765aa85988f3bc06e837bb16 |
|
MD5 | 30611bddc3fd7fea2f337f9387c5a77c |
|
BLAKE2b-256 | 94af62ff2d0215ebc9d4e21adf37acdc03b3fd39c2bfc37f8f5ee0a671ad1079 |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ec76302d0e37b95da0d1a9252b147f166a5d0d21d88ab6332290d597ec35ad22 |
|
MD5 | 7aa24e85e08e6b3ab37388365dc9963b |
|
BLAKE2b-256 | f91a3de9198453de8355e95c5009fc64c37a01317d5ae953b6f62075a01fd6e1 |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d88415a53747811fd6edeed34813907e151a34f775b6c71d248ab2008c8607fa |
|
MD5 | 3989694a8d3466a5687ea97d91b1cda0 |
|
BLAKE2b-256 | e871c7415bfa885ec833996688bdbf9f47fa14d589b1f65089af890f9431ff9e |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 36822b627760f8b227f5fde336848eb2f74bd80da67b8235d1b7d2ee1e49a286 |
|
MD5 | e5bf412a8a85a9d5e4b485226bbf3f65 |
|
BLAKE2b-256 | 338a18b373b6e310b0fd483290d4650ceb18a37dc81e416936bf01172e6a9787 |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1eaa3abb66a41e05825b57d33a62ad64ddd9dc392757b029007178f38346deea |
|
MD5 | e1179665b10b6b337a6f757f807e14fa |
|
BLAKE2b-256 | 96fd076d6e8aa29d8c5ed8766a82ed12648d51a16a7a359d3c9eba4d1c0f2e9e |
哈希值 用于 zfec-1.5.7.4-cp310-cp310-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1f26cfbd74704e55f93cef351a6f9d86a3d4f8cc5ebdfd7def1edd6e685105a9 |
|
MD5 | 566b36795a055cd11671e8befe909e5d |
|
BLAKE2b-256 | 61043e6973e1e5b6107bfdae61f6020c96a77c30df7e959f53bd771aab96e627 |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15ad8a6623d06b038b83995bee5080c5efacdee6040b214610e9fd7f350fcc46 |
|
MD5 | e52a8f7abeb660eaeed33ffba8d6560e |
|
BLAKE2b-256 | 7697b7e040d9fb5a5c27d7f8d7cb0edae717995129b8a9aafa773263367c5508 |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-musllinux_1_1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3cce9a6ecda727a388e859e0fb3f0b401ed5c90094ca94981d84dbb92cf3fc1a |
|
MD5 | 3fbdd5eb93f797824dbe74fc827f2a84 |
|
BLAKE2b-256 | 480fea9835f85793c0453b06058956ea6e8e7c62346f530568c707aaef26b18e |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd2549bb7988f803f63e0b4dcdada2f8b05e5ba1d78c93eda521dd6b7df9744f |
|
MD5 | 76d3bd52143e18664985e1338883599f |
|
BLAKE2b-256 | e617e486b112f67c940cc0117fb43a18e9cfcfa46183dd83270873884e424d19 |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 35a0519d2af5bf502268b04537f6c8759ffa8eef828a7ebfd4ae27aa20113ab0 |
|
MD5 | eff36f10fb1b4740639f32b2da1f455c |
|
BLAKE2b-256 | c4128ca104001f92bcb2297140c9b9eea4123a65d15bbdab1b4284c14e2a608d |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79ca7b7c58de7ef3003da23c657bf8de6f4392e624dbcf236f600cf0371ebc86 |
|
MD5 | 284fd4d6a67d330f95194cd8622be573 |
|
BLAKE2b-256 | a7dffa3686e930c7477f3a756e6732164c31341ee5f2aa1e4f9c3c2699ede7d4 |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88349704d295e7c22567446f6d7ba7cf756b977b0b99fed1c37c4ff432e5abf7 |
|
MD5 | 0e461b0f7c930f508afa56683f8c6844 |
|
BLAKE2b-256 | 5bd51811f0815b702095e8bcde4151500b72a5391d0fd1743570669657d8f727 |
哈希值 用于 zfec-1.5.7.4-cp39-cp39-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e1d656c6600f8d8e6a3d6c03068af0e8c349bbe0800ea7b26d6b7aa84061adb |
|
MD5 | cf3ebaca2ac9d795eec518807a0632f1 |
|
BLAKE2b-256 | 858b99c0688fd18ad2124f2c3ed2ae1c8451ef83f5c19511631c5a6fc48e3c2c |
哈希值 用于 zfec-1.5.7.4-cp38-cp38-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6842be5dda2141c6145e1543d88bb0a4ceeae5d26600984cc5d5e7573fcdb8b1 |
|
MD5 | a81d68a605ebcbe11f6670573328b589 |
|
BLAKE2b-256 | 4393043efe976ad02b09f203e9aebb4e35d24b5c1727bcd09035d0c10688bbc3 |
哈希值 用于 zfec-1.5.7.4-cp38-cp38-musllinux_1_1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0cdead7c0eea420659ea6745d8f186487349aed37054268e94bcdf072af3ea06 |
|
MD5 | 998e449bc07a74430461dd47bb09fa70 |
|
BLAKE2b-256 | 8867991f6fd3bd11a2238379cf7538128965902552113098b61487730af8e21d |
哈希值 用于 zfec-1.5.7.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84b0f402f2c3abdb9390c48ae3f08272efa41e0bc00c13684f1bfc6f3d1c3d5f |
|
MD5 | c2355c958fd11f71d287492bbfa5de40 |
|
BLAKE2b-256 | 5aa786b91da999742e9c4767f22f601320bb5b9910ed73e7bf5ac8ee1c695f3f |
哈希值 用于 zfec-1.5.7.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69284af164d19720bf380bce64a0fe2f229f26178c9a92fadd643ca1e7b77e81 |
|
MD5 | 26a333278bbf8ffca33484d983b866a7 |
|
BLAKE2b-256 | 4b1b4b43977bd08f70d9975f086edcac97f737bde4c8c8219b84d6c6405afc1b |
哈希值用于zfec-1.5.7.4-cp38-cp38-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df6157e3ed242b287dd81940cccbe7c3213857dfd258e781ec5ecd4594443a3e |
|
MD5 | c3652c94c13ad95d166650f1e0c818b5 |
|
BLAKE2b-256 | b0564f1fdaee1d06e3024f7581895722f956dfea19fd9f0d336805c6dd7fa3e6 |