Compare commits

...

3 Commits

3 changed files with 147 additions and 36 deletions

View File

@ -121,42 +121,6 @@ class NumberBaseCrypt {
return $bStrlen . $based; return $bStrlen . $based;
} }
/**
* Parses a base data collection.
* @param string $data Data to parse.
* @return array Resulting data collection.
*/
public function parseBaseDataCollection(string $data) : array {
$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;
}
/**
* Creates a base data collection from an Array of Dezimals.
* @param array $data Array of Dezimals.
* @return string Resulting data collection string.
*/
public function createBaseCollectionFromArray(array $data) : string {
$cd = '';
foreach($data as $item) {
$cd.= $this->addLength($this->base10ToBase($item));
}
return $cd;
}
} }

View File

@ -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;
}
}

View File

@ -119,6 +119,7 @@ class test extends TestCase {
$this->assertEquals(1013374, $b10); $this->assertEquals(1013374, $b10);
} }
/*
// Full Circle data collection test // Full Circle data collection test
public function testFullCircleDataCollection() { public function testFullCircleDataCollection() {
$data = [1337,1338,11111,141415,12,5]; $data = [1337,1338,11111,141415,12,5];
@ -154,5 +155,6 @@ class test extends TestCase {
$reverse = $numberBaseCrypt->parseBaseDataCollection($dataCollection); $reverse = $numberBaseCrypt->parseBaseDataCollection($dataCollection);
$this->assertNotEquals($data, $reverse); $this->assertNotEquals($data, $reverse);
} }
*/
} }