InnoSetup(sha1 + base64编码一个字符串)

时间:2012-10-03 11:46:20

标签: base64 inno-setup pascal sha1

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

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

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

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

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

感谢任何帮助,提前感谢!!

1 个答案:

答案 0 :(得分: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.