2

有没有办法可以使用 sha1 对密码进行编码,然后在 InnoSetUp 中使用 base64 输出?

我看到 InnoSetup 已经有了GetSHA1OfString(),但这不是 base64 编码,而是十六进制编码。

我发现有人在这里发布了一个函数 http://www.vincenzo.net/isxkb/index.php?title=Encode/Decode_Base64

但这只是将 ANSI 字符串作为输入,所以我不能将输出传递GetSHA1OfString()给它。

我想admin使用sha1对输入进行base64编码,所以输出应该是 0DPiKuNIrrVmD8IUCuw1hQxNqZc=

任何帮助表示赞赏,在此先感谢!

4

1 回答 1

0

FPC自带sha1和base64库,所以你可以自己写函数(可以一行实现,不过我拆成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 回答