Delphi 12 Athensで数値と短縮IDを相互変換するSqidsを実装したTSqidsEncodingが追加されました。
Sqidsはあくまで難読化であって暗号化ではないので、内容を隠すことはできませんが、ID番号などをそのまま見せるよりはまし、というような場合に有効です。Sqidsの公式サイトでは、適しているケースとして
- 短縮リンク
- URLで安全に使用できる
- イベントID
- 衝突しないエンコード/デコード
- ワンタイムパスワード
- 短く問題のあるワードを含まない
- 機密データ
- 暗号化されるわけではない
- ユーザID
- デコードすることでユーザ数が漏洩する
使用方法は簡単で、エンコードするには
uses
..., System.NetEncoding.Sqids;
var
Sqids: TSqidsEncoding;
begin
Sqids := TSqidsEncoding.Create;
try
Edit2.Text := Sqids.Encode(Edit1.Text);
finally
Sqids.Free;
end;
end;
デコードするには
var
Sqids: TSqidsEncoding;
begin
Sqids := TSqidsEncoding.Create;
try
Edit3.Text := Sqids.DecodeToStr(Edit2.Text);
finally
Sqids.Free;
end;
end;
とするだけです。Sqidsのソースは数値ですが、エンコードではInreger、TArray<Integer>、Stringを受け取るoverloadが用意されています(Stringは単独またはカンマ区切りの数値表現)。またデコードはTArray<Integer>を返すもの(Decode)、Integerを返すもの(DecodeSingle/TryDecodeSingle)、Stringを返すもの(DecodeToStr)が用意されています。
さらにコンストラクタにエンコード用の文字列を渡すことで生成される文字列をカスタマイズすることもできます。
2023/12/22追記: 公式のblogにもSqidsの使いかたの記事が出ました。
Sqids: RAD Serverとの統合およびスタンドアロンライブラリ (en)
0 件のコメント:
コメントを投稿