Sqids(발음은 "스퀴즈")는 숫자에서 짧은 고유 식별자를 생성할 수 있는 오픈 소스 라이브러리이다. 이러한 ID는 URL-safe하고 여러 숫자를 인코딩할 수 있으며, 일반적인 단어를 포함하지 않는다.
예를 들어 다음 처럼 만들 수 있다.
https://example.com/LaaLla
링크 단축, 로깅을 위한 고유 이벤트 ID 생성, 웹사이트의 제품/객체에 대한 ID 생성(YouTube가 비디오에 대해 하는 것처럼), 문자 메시지에 대한 짧은 ID 생성, 이메일의 확인 코드 등에 적합하다.
생성된 ID는 해시가 아니며 숫자로 다시 디코딩될 수 있다. 따라서 민감한 모든 데이터에 사용되는 것은 좋지 않다. 예를 들어, 사용자 ID로는 적합하지 않을 수 있다. 왜냐하면 디코딩되면 앱의 사용자 수가 드러날 수 있기 때문이다.
인코딩 예:
sqidscxx::Sqids sqids;
auto id = sqids.encode({ 1, 2, 3 });
빠른 인코딩 및 디코딩 예:
sqidscxx::Sqids sqids;
auto id = sqids.encode({ 1, 2, 3 }); // "86Rf07"
auto numbers = sqids.decode(id); // { 1, 2, 3 }
ID가 너무 짧으면 특정 길이로 패딩할 수 있다.
sqidscxx::Sqids sqids({ minLength: 10 });
auto id = sqids.encode({ 1, 2, 3 }); // "86Rf07xd4z"
auto numbers = sqids.decode(id); // { 1, 2, 3 }
알파벳을 섞어서 고유한 ID를 만든다.
sqidscxx::Sqids sqids({ alphabet: "k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt" });
auto id = sqids.encode({ 1, 2, 3 }); // "XRKUdQ"
auto numbers = sqids.decode(id); // { 1, 2, 3 }