2

sha1 を使用してパスワードをエンコードし、InnoSetUp で出力を base64 にする方法はありますか?

InnoSetup には既に がGetSHA1OfString()ありますが、これは base64 エンコードではなく、16 進エンコードです。

誰かがここに関数を投稿しているのを見つけました http://www.vincenzo.net/isxkb/index.php?title=Encode/Decode_Base64

しかし、これはANSI文字列を入力として受け取るだけなので、出力をこれに渡すことはできませんGetSHA1OfString()

adminsha1を使用して 入力のbase64エンコーディングを行いたいので、出力は0DPiKuNIrrVmD8IUCuw1hQxNqZc=

どんな助けでも大歓迎です、事前に感謝します!!

4

1 に答える 1

0

FPC には sha1 および base64 ライブラリが付属しているため、独自の関数を作成できます (1 行で実装できますが、コメントを追加するために 3 つに分割しました)。

uses
  sha1,
  base64;

function GetBase64SHA1OfString(const S: AnsiString): AnsiString;
var
  Digest: TSHA1Digest;
  DigestStr: AnsiString;
begin
  // Compute the SHA1
  Digest := SHA1String(S);
  // Convert SHA1 to string representation
  DigestStr := SHA1Print(Digest);
  // Compute base64 of the string representation and return it
  Exit(EncodeStringBase64(DigestStr));
end;

begin
  Writeln(GetBase64SHA1OfString('Hello!'));
end.
于 2020-07-28T06:34:18.087 に答える