2023年12月13日

Microsoft Monthly Update 2023/12

今日はMicrosoftのセキュリティアップデートの日です。
2023 年 12 月のセキュリティ更新プログラム - リリース ノート - セキュリティ更新プログラム ガイド - Microsoft
2023 年 12 月のセキュリティ更新プログラム (月例) | MSRC Blog | Microsoft Security Response Center

TSqidsEncodingで文字列を難読化する

このアーティクルはDelphi Advent Calendar 2023の12日目の記事です(2日ぶり10回目)。

前回はDelphi 12 Athensで導入されたTSqidsEncodingを普通に使ってみましたが、TSqidsEncodingにはTArray<Integer>を扱うoverloadがあり、今回はそれを使って文字列を難読化してみます。
とはいっても、単にDelphiの文字列(UTF-16)の1文字を単純にUInt16(=Word)として扱うだけです。
uses
  ..., System.NetEncoding.Sqids;

type
  TSqidsEncodingHelper = class helper for TSqidsEncoding
  public
    function EncodeFromString(const AStr: String): String;
    function DecodeToString(const AHash: String): String;
  end;

function TSqidsEncodingHelper.EncodeFromString(const AStr: String): String;
var
  Values: TArray;
  I: Integer;
begin
  SetLength(Values,Length(AStr));
  for I := 0 to Length(AStr) - 1 do
  begin
    Values[I] := UInt16(AStr[I + 1]);
  end;
  Result := Encode(Values);
end;

function TSqidsEncodingHelper.DecodeToString(const AHash: String): String;
var
  Values: TArray;
  I: Integer;
begin
  Values := Decode(AHash);

  SetLength(Result,Length(Values));
  for I := 0 to Length(Result) - 1 do
  begin
    Result[I + 1] := Char(Values[I]);
  end;
end;
文字列の難読化としてXORやROT13などがよく使われますが、このほうがまだましな気がしますね。

2023年12月10日

TSqidsEncodingで数値と短縮IDを相互変換する

このアーティクルはDelphi Advent Calendar 2023の10日目の記事です(1年ぶり9回目)。

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)

2023年11月9日

Firebirdロードマップ(2023/11)

Firebird 4.0.4がリリースされましたが、Firebirdのロードマップも更新されています。

Firebird: Roadmap

適当な要約
  • Firebird 2.0 - 2012年に開発終了。最新版は2012年04月の2.0.7
  • Firebird 2.1 - 2014年に開発終了。最新版は2014年12月の2.1.7
  • Firebird 2.5 - 2019年に開発終了。最新版は2019年06月の2.5.9
  • Firebird 3.0 - 安定版。最新版は2023年08月の3.0.11で、半年ごとの更新、次回(3.0.12)は2024年第2四半期内を予定。
  • Firebird 4.0 - 安定版。最新版は2023年11月の4.0.4で、四半期ごとの更新、次回(4.0.5)は2024年第2四半期内を予定。
  • Firebird 5.0 - 2021年05月に開発開始、2023年03月に最初のベータ版(5.0.0 Beta 1)をリリース。

Firebird 4.0.4

Firebird 4.0.4がリリースされています。

Firebird: Firebird 4.0.4
Firebird 4.0.4 Release Notes (PDF)

2023年11月8日

RAD Studio/Delphi/C++Builder 12 Athensリリース

RAD Studio/Delphi/C++Builder 12 Athensがリリースされています。

RAD Studio 12 Athens ヘルプ (en)
リリース ノート (en)
インストール ノート (en)
新機能 (en)
New features and customer reported issues fixed in RAD Studio 12.0
Platform Status

ポータルサイトからダウンロード可能です
RAD Studio, Delphi, C++Builder 12.0 Web Install
RAD Studio, Delphi, C++Builder 12.0 Inline with Patch 1 Web Install
RAD Studio, Delphi, C++Builder 12.0 ISO
BDE for RAD Studio 12.0
Embarcadero General Packages Download for RAD Studio 12.0

『RAD Studio 12 Athens』の提供開始 (en)

Delphi/C++Builderライブラリに関する今後の展望 (en)
Android API 33サポートはRAD Studio 12ベータ(Yukon)で実施 (en)
Delphi言語: 文字列リテラルのモダナイゼーション (en)
Clang v15 compiler support coming to C++Builder 12
RAD Studio 12ベータ情報: マルチデバイスに対応したアイコンジェネレータ (en)
RAD Studio 12ベータ情報: 弱いエイリアスの導入による「NativeInt」の対応 (en)
RAD Studio 12のWin64 Clangツールチェーン (en)
[Yukon Beta Blog] C++ and Visual Assist in RAD Studio 12.0
Delphi 12における3 x 12 VCLの機能強化 (en)
Delphi 12における3 x 12 FireMonkeyとAndroidの機能強化 (en)
Delphi 12における3 x 12 データ、インターネット、RTLの機能強化 (en)
Delphi 12における 3 x 12 IDE、インストーラー、Delphi 言語の機能強化 (en)
Delphi 12向けに更新されたZXingデモアプリ(Android 13と iOS 17で動作済み)を公開 (en)
ウェビナーへ寄せられたRAD Studio 12 に関するQ&A (en)
Sqids: RAD Serverとの統合およびスタンドアロンライブラリ (en)
RAD Studio 12向けに新しいプレミアムスタイルを提供 (en)
Delphi / C++Builder 12のSkiaサポートで表現力豊かなUIを構築

GitHub - Embarcadero/RADStudio12Demos: Delphi and C++Builder Demos for Embarcadero RAD Studio version 12

2024/02/10追記: インストーラがPatch 1を含むものに差し替えられています。またBDEおよびEmbarcaderoが提供する主要なパッケージのローカルGetItパッケージもポータルサイトからダウンロードできるようになっています。

2023年11月1日

2023年10月19日

[書籍]C++ソフトウェア設計

紀伊國屋書店新宿本店C++ Software Design (Amazon US)の翻訳である

C++ソフトウェア設計 (Amazon)/Klaus Iglberger著/千住治郎訳/オライリー・ジャパン/ISBN 978-4-8144-0045-4/4,400円

を購入。

2023年9月4日

[書籍]ルールズ・オブ・プログラミング

紀伊國屋書店新宿本店The Rules of Programming (Amazon US)の翻訳である

ルールズ・オブ・プログラミング (Amazon)/Chris Zimmerman著/久富木隆一訳/オライリー・ジャパン/ISBN 978-4-8144-0041-6/3,080円

を購入。