Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
hashids-tsql
Advanced tools
Generates TSQL hash encode functions compatible with hashids.org implementations.
Generates TSQL hash encode functions compatible with hashids.org implementations.
A small set of TSQL functions to generate YouTube-like hashes from one or many numbers. Use hashids when you do not want to expose your database ids to the user.
This repository contains a port to TSQL of the other projects found at hashids.org. The Javascript and .NET versions of Hashids are the primary reference projects for this port.
The included hashids-tsql generator creates a custom set of TSQL functions to encode values with your chosen salt and other options.
The SQL functions generated by hashids-tsql can currently encode numbers, but cannot decode them yet.
Quick Start
What is it?
TSQL Functions
Use Cases
Generator Usage
TODO
The command below will generate a set of TSQL encode functions and test objects into the test.sql
file.
npm install -g hashids-tsql
hashids-tsql -t test.sql
hashids (Hash ID's) creates short, unique, decryptable hashes from unsigned integers.
(NOTE: This is NOT a true cryptographic hash, since it is reversible.)
It was designed for websites to use in URL shortening, tracking stuff, or making pages private (or at least unguessable).
This algorithm tries to satisfy the following requirements:
Instead of showing items as 1
, 2
, or 3
, you could show them as U6dc
, u87U
, and HMou
.
You can choose to store these hashes in the database or encrypt + decrypt on the fly. If storing them in the database,
then hashids-tsql will let you encode hashids in a TSQL stored procedure, trigger or computed column.
All integers need to be greater than or equal to zero.
See hashids.org for more information on this technique.
TSQL does not have function overloading, so the single encode
function that is common in other hashids.org libraries
is instead represented here as a set of encode
functions with slight variations in name and declaration.
The basic forms of encode
for TSQL are:
encode1(int) string
encode2(int, int) string
encodeList(table) string
encodeSplit(string, string) string
In TSQL, the encode
functions that take 1 or 2 integers will be much more useful than the one that takes a table
because typically, you don't want to construct a table variable just to pass 1 or 2 integers into a function.
There are multiple variations on each basic form, in order to return different int and string types (varchar/nvarchar, int/bigint
). encode1A
returns a varchar
(ASCII) value. encode1B
accepts a bigint
. encode1BA
accepts a bigint
and returns a varchar
(and so on).
The SQL Server database project HashidsTsql in this repository contains a full set of pre-generated functions to test with.
The primary use case for a TSQL hashid encoding function can be seen in the
ComputedTest table
where the table's HashId
uses encode1
to hash the Id
column once as part of the atomic INSERT of a record.
As a persisted computed column, HashId
can also be indexed.
If every table were to use the same encode1
function, then any row in any table with Id = 1
would have the same
hash. Therefore, encode2
is provided, which takes 2 numbers. So, TableX can call encode2(1, [Id])
and TableY can
call encode2(2, [Id])
and so on...guaranteeing that the hash for each table's [Id] column don't collide.
Two more TSQL encode functions are currently included which create a hashid from a list of numbers in a table or
delimited string. They are encodeList
and encodeSplit
.
Usage: hashids-tsql [options] [file or directory/ path]
Options:
-h, --help output usage information
-V, --version output the version number
-d, --database [name] Database name. [HashidsTsql]
-m, --schema [name] Database schema. [hashids]
-a, --ascii Generate ASCII/varchar compatible function(s).
-b, --bigint Generate BIGINT compatible function(s).
-e, --encodeOnly Generate encode function(s) only.
-s, --salt [value] Salt. [random]
-n, --minHashLength [n] Minimum hash length. [0]
-l, --alphabet [value] Alphabet. [a-z,A-Z,1-9,0]
-x, --fileExt [value] Extension for output files. [sql]
-t, --test Generate test procedureds and tables.
FAQs
Generates TSQL hash encode functions compatible with hashids.org implementations.
The npm package hashids-tsql receives a total of 0 weekly downloads. As such, hashids-tsql popularity was classified as not popular.
We found that hashids-tsql demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.