Allgemein
Diese PHP-Funktion wird benötigt, um den Umsatzzähler der Registrierkasse zu verschlüsseln. Eingabewerte sind der Kassenname und die Belegnummer als String als erster Parameter, der (neue) Kassenstand als Integer als zweiter Parameter und der AES-Key im Hex-Format als dritter. Rückgabewert ist der Signaturwert.
function aes256_encode($sString, $iTurnover, $sKey){
$binIv = substr(hash('sha256', $sString, true), 0, 16);
$binTc = pack('J', $iTurnover);
$binKey = base64_decode($sKey);
return openssl_encrypt($binTc, 'aes-256-ctr', $binKey, false, $binIv);
}
Beispiele
Im Fall des Startbelegs ruft man die Funktion folgendermaßen auf. Der aktuelle Kassenstand ist hier natürlich 0.
aes256_encode('KassennameBelegnummer', 0, 'AES-Key');
Im Fall eines normalen Belegs addiert man den aktuellen Kassenstand mit dem Betrag des Belegs und ruft die Funktion folgendermaßen auf:
$iCents = $iCentsInDerKasse + $iCentsAmBeleg;
aes256_encode('KassennameBelegnummer', $iCents, 'AES-Key');
Tipp: Man braucht keine Stornobelege, weil man mit dem Standardbeleg auch negative Zahlen erfassen kann.
Im Fall eines Null-Belegs ruft man die Funktion mit dem derzeitigen Kassenstand folgendermaßen auf:
aes256_encode('KassennameBelegnummer', $iCentsInDerKasse, 'AES-Key');