【问题标题】:InnoSetup (sha1 + base64 encoding a string)InnoSetup(sha1 + base64 编码字符串)
【发布时间】:2012-10-03 11:46:19
【问题描述】:
有没有办法可以使用 sha1 对密码进行编码,然后在 InnoSetUp 中使用 base64 输出?
我看到 InnoSetup 已经有 GetSHA1OfString(),但这不是 base64 编码,而是十六进制编码。
我发现有人在这里发布了一个功能
http://www.vincenzo.net/isxkb/index.php?title=Encode/Decode_Base64
但这只是将一个 ANSI 字符串作为输入,所以我不能将 GetSHA1OfString() 的输出传递给它。
我想使用 sha1 对输入说 admin 进行 base64 编码,所以输出应该是
0DPiKuNIrrVmD8IUCuw1hQxNqZc=
任何帮助表示赞赏,在此先感谢!
【问题讨论】:
标签:
base64
inno-setup
pascal
sha1
【解决方案1】:
FPC自带sha1和base64库,所以你可以自己写函数(可以一行实现,不过我拆成3个加cmets):
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.