Klasse zum mit Collections arbeiten erstellt (ungetestet)
This commit is contained in:
parent
c55b494d6c
commit
7de1452b1a
|
@ -0,0 +1,145 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace NAE\Crypt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Klasse um Kryptografie als Basis-Konvertierung für eine Datensammlung zu implementieren.
|
||||||
|
* @package NAE\Crypt
|
||||||
|
* @author <Marcel Naeve> <php@naeve.info>
|
||||||
|
*/
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue