From 7de1452b1adabdc030d47787f51a1dad43d92758 Mon Sep 17 00:00:00 2001 From: Marcel Naeve Date: Wed, 17 Apr 2024 19:39:23 +0200 Subject: [PATCH] Klasse zum mit Collections arbeiten erstellt (ungetestet) --- src/class.NumberBaseCryptCollection.php | 145 ++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 src/class.NumberBaseCryptCollection.php diff --git a/src/class.NumberBaseCryptCollection.php b/src/class.NumberBaseCryptCollection.php new file mode 100644 index 0000000..85893f2 --- /dev/null +++ b/src/class.NumberBaseCryptCollection.php @@ -0,0 +1,145 @@ + + */ +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 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;$i<$this->dataList;$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;$i<$this->dataList;$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;$i<$digitList;$i++) { + $numberBaseCrypt = new NumberBaseCrypt($digitList[$i]); + + $len = substr($data, 0, 1); + $len = $numberBaseCrypt->baseToBase10($len); + $data = substr($data, 1); + + if($len <= strlen($data)) { + $tmp = substr($data, 0, $len); + $cd[] = $numberBaseCrypt->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; + } + + + +} + + +