1. Go to this page and download the library: Download niktomo/kasumi library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
niktomo / kasumi example snippets
$scrambler->scramble(12345); // ScrambledValue → "00000001x73riz"
$scrambler->scramble($scrambled); // back to 12345
use Kasumi\Laravel\Facades\Kasumi;
// Scramble
$result = Kasumi::scramble(12345);
echo $result; // "00000001x73riz" (base36, always 14 chars, salt-dependent)
// Unscramble — pass the ScrambledValue directly (no toInt() on intermediate values)
$original = Kasumi::scramble($result)->toInt(); // 12345
use Kasumi\Scrambler;
class UserController
{
public function __construct(private Scrambler $scrambler) {}
public function show(string $encoded): Response
{
$encoder = new \Kasumi\Base36Encoder();
[$upper, $lower] = $encoder->decode($encoded);
$scrambled = new \Kasumi\ScrambledValue($upper, $lower, $encoder);
$id = $this->scrambler->scramble($scrambled)->toInt();
$user = User::findOrFail($id);
// …
}
}
use Kasumi\Scrambler;
use Kasumi\Base36Encoder;
$scrambler = Scrambler::fromSalt(
salt: 1234567891, // must be odd
encoder: new Base36Encoder(),
);
$result = $scrambler->scramble(12345);
echo $result; // "00000001x73riz" (with salt 1234567891)
// Unscramble
$original = $scrambler->scramble($result)->toInt(); // 12345
use Kasumi\Encoder;
class Base62Encoder implements Encoder
{
public function encode(int $upper, int $lower): string { /* … */ }
/** @return array{0: int, 1: int} */
public function decode(string $s): array { /* … */ }
}
$scrambler = Scrambler::fromSalt($salt, new Base62Encoder());
use Kasumi\Base36Encoder;
use Kasumi\ChecksumEncoder;
use Kasumi\Scrambler;
$encoder = new ChecksumEncoder(new Base36Encoder());
$scrambler = Scrambler::fromSalt(salt: 1234567891, encoder: $encoder);
$result = $scrambler->scramble(12345);
echo $result; // "0b00u000i001gx73riz" (19 chars, with salt 1234567891)
$original = $scrambler->scramble($result)->toInt(); // 12345
// Decoding a tampered string throws \InvalidArgumentException
$encoder->decode('zzzzzzzzzzzzzzzzzzzz'); // throws
$encoder = new ChecksumEncoder(new Base62Encoder());
return [
'scramble_salt' => env('KASUMI_SCRAMBLE_SALT'),
// Encoder to use. Switch to ChecksumEncoder to add tamper detection (19-char output).
'encoder' => \Kasumi\Base36Encoder::class,
// 'encoder' => \Kasumi\ChecksumEncoder::class,
];