Compare commits
3 Commits
c55b494d6c
...
5fee5b8e97
Author | SHA1 | Date |
---|---|---|
|
5fee5b8e97 | |
|
e8355a7761 | |
|
7de1452b1a |
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue