qroques/resilient-data

一个使数据具有弹性的包

v0.8.0 2024-07-03 22:01 UTC

README

警告

此项目仍在进行中。代码尚未完全功能化。

概述

Resilient Data 是一个库,提供类以弹性方式处理数据。通常,数据会被分成多个部分,并且每个部分可以存储在不同的位置。此库提供类来处理这类数据,即使在某些部分丢失的情况下也能恢复初始数据。

示例

你有 4 个合作伙伴,你想将一个秘密分成 4 部分,使每个合作伙伴都有一部分。你想确保至少有 3 个合作伙伴在场时秘密可以被恢复。这意味着如果你失去一个合作伙伴,你仍然可以恢复秘密。为此,此库会将秘密分成多个部分(块)并分配给合作伙伴。为了确保冗余,每个块都会被复制并分配给两个合作伙伴。

用法

安装

Composer

composer require qroques/resilient-data

注意

此库需要 PHP 8.3 或更高版本,但不需要任何其他依赖。

分割数据

$resilientData = new Qroques\ResilientData\ResilientData(file_get_contents(__DIR__.'/data/lorem.txt'));
// We want to split the data into 5 parts, and we want to be able to recover the data even with 2 parts missing
$splittingConfiguration = new Qroques\ResilientData\SplittingConfiguration(5, 2);
$splitter = new Qroques\ResilientData\Splitter();

$fragments = $splitter->split($resilientData, $splittingConfiguration);

警告

数据块没有被加密。这意味着数据的部分仍然可以从片段中读取。

恢复数据

$assembler = new Qroques\ResilientData\Assembler();
$resilientData = $splitter->assemble($fragments);