TinyID
Shorten and obfuscate IDs in Raku language.
Install / Use
/learn @bbkr/TinyIDREADME
Shorten and obfuscate IDs in Raku language
SYNOPSIS
use TinyID;
my $key = ( 'a'..'z', 'A'..'Z', 0..9 ).flat.pick( * ).join;
# example key is '2BjLhRduC6Tb8Q5cEk9oxnFaWUDpOlGAgwYzNre7tI4yqPvXm0KSV1fJs3ZiHM'
my $tinyid = TinyID.new( key => $key );
say $tinyid.encode( 48888851145 ); # will print '1FN7Ab'
say $tinyid.decode( '1FN7Ab' ); # will print 48888851145
DESCRIPTION
With the help of this module you can shorten and obfuscate your IDs at the same time. Useful for:
- Hiding real database IDs in URLs or REST APIs.
- Saving space where it is limited, like in SMS or Push messages.
METHODS
new( key => 'qwerty' )
Keyt must consist of at least two unique unicode characters. The longer the key - the shorter encoded ID will be. Encoded ID will be made exclusively out of characters from the key.
Choose your key characters wisely, for example:
- For SMS messages generate key from
a-z,A-Z,0-9range. You will get excellent shortening like1234567890->380FQs. - For NTFS file names generate key from
a-zrange. You will get good shortening and avoid case insensitivity collisions, like1234567890->iszbmfx. - When trolling generate key from Emojis. So
1234567890will be represented as😣😄😹😧😋😳.
encode( 123 )
Encode unsigned integer into a string.
Note that this should not be considered a strong encryption. It does not contain consistency checks. And key is easy to reverse engineer with small amount of encoded/decoded samples given. Treat it as really, really fast obfuscation only.
decode( 'rer' )
Decode string back into unsigned integer.
TRICKS
If you provide sequential characters in key you can convert your numbers to some weird numeric systems, for example base18:
TinyID.new( key => '0123456789ABCDEFGH' ).encode( 48888851145 ).say; # '47F709HFF'
COMPATIBLE COUNTERPARTS
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
