*/ class NumberBaseCryptCollection extends NumberBaseCrypt { /** * Hält die Digits in einem Array aus Digit-Arrays * @var array digitList */ protected $digitList = []; /** * Hält die Werte in einem Array * @var array dataList */ protected $dataList = []; /** * Eine Dezimalnummer zur Collection hinzufügen. * @param int $value Dezimalnummer * @return NumberBaseCryptCollection $this */ public function addData(int $value) : NumberBaseCryptCollection { $this->shuffleDigits(); $this->digitList[] = $this->getDigits(); $this->dataList[] = $value; return $this; } /** * Abfrage der Hinterlegten Daten (plain) in Array. * @return array Hinterlegten Daten (plain) */ public function getPlainData() : array { return $this->dataList; } /** * Abfrage der Listen der Digits in einem Mehrdimensionalen Array * @return array Listen der Digits */ public function getDigitList() { return $this->digitList; } /** * Abfrage der Listen der Digits in einem String Seperiert durch Leerzeichen * @return string Liste der Digits in einem String Seperiert durch Leerzeichen */ public function getDigitListAsString() { return implode(' ', $this->digitList); } /** * Rendern der Sammlung als einfach kryptografischen String. * @return string Sammlung als einfach kryptografischer String. */ public function render() : string { $cd = []; for($i=0;$idataList);$i++) { $cd[] = $this->addLength($this->base10ToBase($this->dataList[$i])); } return implode('', $cd); } /** * Rendern der Sammlung als komplex kryptografischen String. * @return string Sammlung als komplex kryptografischer String. */ public function renderComplex() : string { $cd = []; for($i=0;$idataList);$i++) { $this->setDigits($this->digitList[$i]); $cd[] = $this->addLength($this->base10ToBase($this->dataList[$i])); } return implode('', $cd); } /** * Entschlüsseln der Sammlung aus einem einfach kryptografischen String. * @param string $data Sammlung als einfach kryptografischer String * @param array $digits Liste der digits * @return array Plain Sammlung als Array */ public function decrypt(string $data, array $digits) : array { $this->setDigits($digits); $cd = []; $len = 0; while(strlen($data) > 0) { $len = substr($data, 0, 1); $len = $this->baseToBase10($len); $data = substr($data, 1); if($len <= strlen($data)) { $tmp = substr($data, 0, $len); $data = substr($data, $len); $cd[] = $this->baseToBase10($tmp); } } return $cd; } /** * Entschlüsseln der Sammlung aus einem komplex kryptografischen String. * @param string $data Sammlung als komplex kryptografischer String * @param array $digits Mehrdimensinale Liste der digits als mehrdimensionales Array. * @return array Plain Sammlung als Array */ public function decryptComplex(string $data, array $digitList) : array { $cd = []; for($i=0;$isetDigits($digitList[$i]); $len = substr($data, 0, 1); $len = $this->baseToBase10($len); $data = substr($data, 1); if($len <= strlen($data)) { $tmp = substr($data, 0, $len); $cd[] = $this->baseToBase10($tmp); $data = substr($data, $len); } } return $cd; } /** * Umwandeln einer Liste von Digit-Sets seperiert durch Leerzeichen von String zu einem Mehrdimensionalen Array. * @param string $digitList enthält Digit-Sets seperiert durch Leerzeichen * @return array Mehrdimensionales Array mit Digit-Sets (Array) */ public function digitListFromString(string $digitList) : array { $data = explode(' ', $digitList); $cd = []; foreach($data as $digits) { $cd[] = str_split($digits, 1); } return $cd; } }