Skip to main content

🔐 Encryption Library

🛡️ HesabeCrypt Implementation

This section provides the complete HesabeCrypt implementation in multiple programming languages, featuring industry-standard AES-256-CBC encryption for secure data transmission.

⚠️Important Note

The encryption and decryption code snippets are provided in PHP, JavaScript, and TypeScript for better integration options.

🔒 Encryption Methods

<?php

namespace App\Libraries;

class HesabeCrypt {
// AES Encryption Method Starts
public static function encrypt($str, $key, $ivKey)
{
$str = self::pkcs5_pad($str);
$encrypted = openssl_encrypt($str, 'AES-256-CBC', $key, OPENSSL_ZERO_PADDING, $ivKey);
$encrypted = base64_decode($encrypted);
$encrypted = unpack('C*', ($encrypted));
$encrypted = self::byteArray2Hex($encrypted);
$encrypted = urlencode($encrypted);
return $encrypted;
}

private static function pkcs5_pad($text)
{
$blocksize = 32;
$pad = $blocksize - (strlen($text) % $blocksize);
return $text.str_repeat(chr($pad), $pad);
}

private static function byteArray2Hex($byteArray)
{
$chars = array_map("chr", $byteArray);
$bin = join($chars);
return bin2hex($bin);
}
}

🔓 Decryption Methods

<?php
// Decryption Method for AES Algorithm Starts

public static function decrypt($code, $key, $ivKey)
{
if (!(ctype_xdigit($code) && strlen($code) % 2 == 0)) {
return false;
}
$code = self::hex2ByteArray(trim($code));
$code = self::byteArray2String($code);
$iv = $key;
$code = base64_encode($code);
$decrypted = openssl_decrypt($code, 'AES-256-CBC', $key, OPENSSL_ZERO_PADDING, $ivKey);
return self::pkcs5_unpad($decrypted);
}

private static function hex2ByteArray($hexString)
{
$string = hex2bin($hexString);
return unpack('C*', $string);
}

private static function byteArray2String($byteArray)
{
$chars = array_map("chr", $byteArray);
return join($chars);
}

private static function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)) {
return false;
}
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
return false;
}
return substr($text, 0, -1 * $pad);
}

🔧 Usage Examples

Security Features

🔐
AES-256-CBC

Industry standard encryption

🛡️
PKCS5 Padding

Secure data padding

🔑
IV Key Support

Enhanced security vector