前回は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文字列の難読化としてXORやROT13などがよく使われますが、このほうがまだましな気がしますね。; 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;
0 件のコメント:
コメントを投稿